1. 程式人生 > >34 char類型轉換為int類型

34 char類型轉換為int類型

print size str div class %d 為什麽 log iostream

#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類型