34 char类型转换为int类型
Posted 王小东大将军
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了34 char类型转换为int类型相关的知识,希望对你有一定的参考价值。
#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类型的主要内容,如果未能解决你的问题,请参考以下文章