小编Den*_*rin的帖子

为什么`int >> 32`不总是为零?

有人可以解释一下为什么在C/C++中,一些4字节整数的32位按位移位可能不会返回零?为什么它取决于-O编译器的选项?

例如,此代码在gcc 4.8.3中给出45 -O0和0以及-O3选项:

unsigned int x = 45; // 4 bytes
x = x >> 32;
printf("%u\n", x);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c c++ bit-manipulation shift

3
推荐指数
1
解决办法
211
查看次数

标签 统计

bit-manipulation ×1

c ×1

c++ ×1

shift ×1