c++ - 位移位和赋值

标签 c++ c bit-shift

<分区>

这有点让我发疯。

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/

相关文章:

c++ - 使用模板更精确的诊断错误消息?

c++ - 获取 boost :shared_ptr's get method in a source tree 所有用途的列表

c++ - OpenCV findHomography 给出不准确的结果

c - 未知的 Malloc 堆栈溢出 c

c - 所有 8 位的移位会发生什么

c++ - 在这种特殊情况下,C++ 如何处理移位运算符?

c++ - 使用左移运算符将 F 转换为 FF

c++ - 请解释为什么这些逻辑运算符在 CPP 中没有正常工作

c - 在 C 中获取操作系统的默认颜色

c - 一个包含结构数组的结构,其中包含数组(和一个数组) : How would I malloc this?