【发布时间】:2015-07-04 04:56:54
【问题描述】:
有人可以解释一下为什么某些 4 字节整数的右 32 位移位可能在 C/C++ 中返回不为零吗?为什么要依赖编译器的-O选项?
例如,此代码在 gcc 4.8.3 中给出 45 和 -O0 和 0 和 -O3 选项:
unsigned int x = 45; // 4 bytes
x = x >> 32;
printf("%u\n", x);
为什么会这样?
【问题讨论】:
标签: c++ c bit-manipulation shift