unsigned int = -1打印输出也是-1?
int main(void)
{
unsigned char a = -1;
unsigned short b = -1;
unsigned int c =-1;
printf("a = %d\n", a);//255
printf("b = %d\n", b);//65535
printf("c = %d\n", c);//-1
return 0;
}
为什么c最后是输出-1而不是unsigned int的最大值?
[解决办法]
因为你输出使用的是%d,这个标示符输出的是有符号的int变量。所以输出的是-1。你可以使用%ud试试看。
[解决办法]
[解决办法]
a,b,c在内存中的情况为:FF 00 FF FF FF FF FF FF。
即a,b实际上各占两个字节,又printf调用时可能涉及到类型转换,也许可以解释为什么a和b输出的就是无符号最大值。
[解决办法]
%d强转成带符号整数,可以容下此3类,但是前2种完全容下(符号位都到000后了) int型刚容下符号位是1
是不是