c语言的unsigned小问题
为什么unsigned int a = 1 << 31 打印出的数是个负数?
int main(void)
{
unsigned char c = 1 << 7;
unsigned int d = 1 << 31;
printf("%d\n", c);
printf("%d\n", d);
return 1;
}
结果为:
128
-2147483648
环境为linux,32位 c unsigned?int
[解决办法]
%d有符号
%u
[解决办法]
输出格式
printf("%u\n", c);
printf("%u\n", d);