1.char c = 128, 用%d打印,结果是什么?为什么?
结果:-128
128数值 源码为:1000 0000
反码为:1000 0000
补码为:1000 0000
然后赋值给char c 的补码为:1000 0000
因为char c 为有符号 ,所以char c
反码为:1111 1111
源码为:1000 0000 == -0
因 - 0 = -128
所以最终输出值为:-128
2 .unsigned char c = -1,用%u打印,结果是什么?为什么?
结果:255
-1数值 源码为:1000 0001
反码为:1111 1110
补码为:1111 1111
因为char c为无符号最高位就不是符号位
(二进制) 1111 1111 = 225 (十进制)
最终结果输出值为:225
3.char类型数据中储存0x9C,用%d打印的值是什么?(写出运行结果,补码,反码,源码推理过程)
过程:0x9c 转换二进制源码为 :1001 1100
反码:1001 1100
补码为:1001 1100
然后赋值给char c 因为char c 为有符号类型
补码:1001 1100 最高位‘1’为符号位
反码 1001 1011
源码 1110 0100
(二进制)1110 0100 = -100(十进制)
char c 最终输出值为 -100