1.char c = 128,用%d打印,结果是什么,为什么?
答:结果是-128,因为char在有符号区分的取值范围是[-128,127],计算机读取到128时会自动转化成二进制补码位1000 0000,计算反码位0111 1111,翻译位源码就是1000 0000,因为-0的源码也为1000 0000,同时-0为一个特殊的值存在,首位即是符号位又是数字位,故而读取为-128.
2.unsigned char c = -1 用%u打印,结果是什么,为什么?
答:结果是255,因为char规定为unsigned,即为无符号类型,无符号类型中,char的取值范围在[0,255],-1的源码为1000 0001,则反码为0111 1110,则补码为0111 1111换取为十进制数为255,所以结果为255.
3.char类型数据中,存储0x9c,用%d打印的值是什么,写出运行结果,补码,反码,源码,推算过程写出来?
答:源码为:1001 1100==》反码为:1110 0011==》补码为1110 0100再将补码换算成十进制为-100.