34 char類型轉換為int類型
阿新 • • 發佈:2017-09-04
print size str div class %d 為什麽 log iostream
char c=128; printf("c=%d\n",c); 結果為什麽是-128,請解釋為什麽?
#include<iostream> #include<cstdlib > using namespace std; int main() { char a=101; int sum=200; a+=27;sum+=a; printf("%d", a); cout<<sum<<endl; }
分析:char類型的範圍是-128---+127,當a+=27,之後a的值超出可表示範圍會變為-128.
a為char型,-128~127,a=101,a+=27後溢出a=-128:
a=127時不溢出 01111111(127補碼)
a+=1時溢出 10000000(-128補碼)
sum += a;
sum為int型,a(char提升為int)
10000000------->11111111 11111111 11111111 10000000(-128補碼)
所以,sum=200-128:00000000 00000000 00000000 11001000
+11111111 11111111 11111111 10000000
----------------------------------------------------------------------------------
00000000 00000000 00000000 01001000 (64+8=72)
char c=128; printf("c=%d\n",c); 結果為什麽是-128,請解釋為什麽?
因為有符號字符型其範圍為-128~127,127用二進制表示為:0111 1111,128表示為1000 0000,這裏發生溢出,因為第一位為1,為符號位,表示負數,即-128
34 char類型轉換為int類型