若有定义:char a=123,b=456; int sum;执行sum=a+b;后sum的值为6

若有定义:char a=123,b=456; int sum;执行sum=a+b;后sum的值为67,为什么?

char型是有符号的占8位的整数,表示整数范围是-128~128,当你给b赋值456时,溢出,值为-56,然后执行a+b即123+(-56)=67追问

谢谢

为什么是-56?

追答

呃...之前打错了,表示整数范围是-128~127
456赋值给char型的时候会截断,也就是只取后8位二进制数
456:111001000
后8位:11001000
值就是-56

追问

第一位是符号啊,那就是2的3次和6次相加啊,8+64??

追答

这个是补码...要转换一下就是了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-31
aswadaefae
第2个回答  2013-12-31
你这个是按二进制的追问

额、、具体点

相似回答