c - C的移位运算中使用变量时出错

标签 c

昨晚, 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/

相关文章:

c - 如何循环Linux设备树节点中的多个寄存器?

c - 普通的指针算术可以在 opencl 内核上工作吗?

c - 在 Windows 中使用 C 测量执行时间

c - 为什么我用 fscanf 读取第二行时得到一个空字符?

c - 如何为使用不同参数调用的给定函数实现单独的静态变量

c - 在循环链接列表中存储用户输入的名称

c - 错误 C2065 : 'i' : undeclared identifier when iterating in C

c - 结构声明末尾的这个 [1] 的目的是什么?

c - 解析 C 头文件以提取有关数据类型、函数和函数参数的信息

c - 此代码是否 ungetch() '\n' ?