printf("%d",a);
-1本来是整型,占4个字节,但是char只占1个字节,所以
-1的补码本来是:32个1
现在是:11111111
对于char a=-1来说,输出的还是-1,
但是unsigned char a=-1来说,输出%d是整型,就要进行整型提升,
在前面补充符号位,又因为unsigned 没有符号位,所以补充0,
就变成了24个0+8个1
就输出255;
如果是这样
char a=-1;
printf("%u",a);
补码:11111111
%u整型提升,在前面补充符号位
就变成了32个1;
输出4294967295。