<分区>
这有点让我发疯。
int a = 0xffffffff;
int b = 32;
cout << (a << b) << "\n";
cout << (0xffffffff << 32) << "\n";
我的输出是
-1
0
为什么我没有得到
0
0
<分区>
这有点让我发疯。
int a = 0xffffffff;
int b = 32;
cout << (a << b) << "\n";
cout << (0xffffffff << 32) << "\n";
我的输出是
-1
0
为什么我没有得到
0
0
最佳答案
当您将一个值移动不小于其大小的位数(例如,32 位整数的 32 位或更多位)时,会出现未定义的行为。您刚刚遇到了该未定义行为的示例。
关于c++ - 位移位和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073327/