例题1:
首先我们要求a+b的值并打印出来,a和b都是字符类型,故都需要整型提升, 内存中补码相加
后为:0000 0000 0000 0000 0000 0000 1000 0010;因为要赋值给字符类型变量c,故进行截断
1000 0010,最高位为1,是负数。此时我们要打印无符号的十进制整型数值,所以再次进行整型
提升,高位补符号位:
1111 1111 1111 1111 1111 1111 1000 0010,此时最高位为有效位,打印结果为:
(2^32-1)-(2^7-1)+2=4,294,967,170
程序运行结果:
现将程序稍加改变:
例题2:
此时打印的是a+b的值,没有经过“中转站”字符变量c,所以a和b整型提升且执行相加运算之
后,不需要进行截断,即为:0000 0000 0000 0000 1000 0010,结果为:2^7+2=130;
程序运行结果为:
例题3:
这里c和例题1中一样,得到的数值在内存中为:1000 0010;现在要打印的是有符号整型十进
制数值,于是进行整型提升:1111 1111 1111 1111 1111 1111 1000 0010;此时最高位为符号位,
故需要 求得其原码:1000 0000 0000 0000 0000 0000 0111 1110;
转十进制大小为:-(2^7-1-1)=-126
程序运行结果为: