char a=-1,unsigned char a=-1解析

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。

你可能感兴趣的:(c语言)