昨晚, friend 告诉我一个情况,如下图所示:
在c/c++中,我们这样写两行代码:
int a = 0;
printf("%d\n", 1 << -1);
printf("%d\n", 1 << (a-1));
奇怪的是有两个不同的结果,前一个是0,另一个是-2147483648。
我们不知道为什么,任何人都可以给我帮助。
欢迎任何词。
最佳答案
在左移运算符的右侧有一个负操作数在 C 中是未定义的行为。您不应该对这样做的任何结果感到惊讶。
关于c - C的移位运算中使用变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425724/