国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

詳解C語(yǔ)言中的char數(shù)據(jù)類型及其與int類型的轉(zhuǎn)換

2020-05-23 14:15:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了詳解C語(yǔ)言中的char數(shù)據(jù)類型及其與int類型的轉(zhuǎn)換,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

C語(yǔ)言中的char變量

char是C/C++整型數(shù)據(jù)中比較古怪的一個(gè),其它的如int/long/short等不指定signed/unsigned時(shí)都默認(rèn)是signed。雖然char在標(biāo)準(zhǔn)中是unsigned(因?yàn)閏har類型提出的初衷是用來(lái)表示ascii碼,ascii碼的范圍是0~127),但實(shí)際情況中究竟是signed還是unsigned取決于編譯器。

可通過下面程序判斷編譯器的默認(rèn)char類型:

 

  1. void char_type() 
  2. char c=0xFF; 
  3. if(c==-1) 
  4. printf("signed"); 
  5. elseif(c==255) 
  6. printf("unsigned"); 
  7. else 
  8. printf("error!"); 

當(dāng)你不確定編譯器的默認(rèn)char類型時(shí),就用顯示聲明:signed char和unsigned char;

在C/C++語(yǔ)言中,char變量為一個(gè)字節(jié),8位,signed char表示的范圍:-128~127【-128在內(nèi)存中的二進(jìn)制表示為1000 0000,127在內(nèi)存中的表示為0111 1111】;unsign char表示的范圍:0000 0000~1111 1111,即0~255;

注意:整數(shù)在內(nèi)存中是以補(bǔ)碼存取的,正數(shù)的補(bǔ)碼:等于自己,負(fù)數(shù)的補(bǔ)碼:取反加1,例如:127在內(nèi)存中表示為0111 1111, -127在內(nèi)存中表示為~(0111 1111)+1=1000 0001; 假定某內(nèi)存單元p的內(nèi)容是1111 1111,那么它一定是255嗎?實(shí)際上取決于你的代碼是要把它看成有符號(hào)還是無(wú)符號(hào)數(shù),如果是無(wú)符號(hào)則表示255,如果是有符號(hào)則表示-1【對(duì)于有符號(hào)數(shù),最高位為符號(hào)位,1表示負(fù),0表示正】:

 

 
  1. signed char c=*p; //c=-1 
  2. unsigned char c=*p;//c=255 

這也解釋了上面這段代碼能判斷編譯器默認(rèn)char類型。

char型數(shù)字轉(zhuǎn)換為int型

轉(zhuǎn)換方法

 

  1. a[i] - '0' 

參考程序

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.  
  5. int main()  
  6. {  
  7. char str[10];  
  8. int i, len;  
  9.  
  10. while(scanf("%s", str) != EOF)  
  11. {  
  12. for(i = 0, len = strlen(str); i < len; i++)  
  13. {  
  14. printf("%d", str[i] - '0');  
  15. }  
  16. printf("/n");  
  17. }  
  18.  
  19. return 0;  
  20. }  

int類型轉(zhuǎn)化為char類型

轉(zhuǎn)換方法

 

 
  1. a[i] + '0' 

參考程序

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.  
  5. int main()  
  6. {  
  7. int number, i;  
  8. char str[10];  
  9.  
  10. while(scanf("%d", &number) != EOF)  
  11. {  
  12. memset(str, 0, sizeof(str));  
  13.  
  14. i = 0;  
  15. while(number)  
  16. {  
  17. str[i ++] = number % 10 + '0';  
  18. number /= 10;  
  19. }  
  20. puts(str);  
  21. }  
  22.  
  23. return 0;  
  24. }  

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 喜德县| 镇沅| 竹北市| 遂昌县| 葫芦岛市| 大安市| 安远县| 枣强县| 襄樊市| 丰宁| 南汇区| 白山市| 宁化县| 冕宁县| 永吉县| 中超| 简阳市| 博罗县| 磐石市| 通渭县| 永新县| 广南县| 青州市| 望谟县| 兴海县| 桑植县| 垣曲县| 民县| 德昌县| 区。| 习水县| 古田县| 井冈山市| 成都市| 南丹县| 全南县| 崇州市| 竹北市| 阿城市| 天长市| 嘉义县|