【发布时间】:2016-11-29 16:02:58
【问题描述】:
为什么我在执行时得到负数?
unsigned int a = 1 << 31;
printf("%d",a);
我已经在我的计算机上检查了整数的大小,它是 4 字节。所以我的整数由 32 位组成,向左移动 31 次,我应该得到最高有效位。这意味着它应该是正数,但我总是得到负数。
我得到了什么:-2147483648
我的预期:一些正数(可能是 1073741824)
我在这里缺少什么?
【问题讨论】:
-
您打印的是签名!
-
printf("%u",a);应该修复它。
标签: c bitwise-operators