位移的奇怪行为

Strange behavior of bit-shift

无法理解此位移位的行为:

int container = 1;

cout<<(container>>32)<<endl;

如果是逻辑移位输出应该是0,但它是1,就好像它是循环移位一样。在查看反汇编时,我看到使用的命令是 SAR。请向我解释这种行为。

您将 32 位数字移动了 32,这导致了未定义的行为,结果 1 是巧合。