【发布时间】:2015-10-11 10:35:23
【问题描述】:
在C编程中使用左移运算符将数字左移-1的结果是什么?
例如:
23 << -1
【问题讨论】:
-
左移 -1 看起来像右移 1
-
@adricadar:看起来像(我有时希望是这样),但是:根本错误。
-
注意:正如OP所说的“数字”,还有一个限制:“每个操作数都应该是整数类型”。
-
@MartinJames:负常数偏移可能来自宏。但更重要的是运行时产生的负偏移,例如在软件浮点算法的规范化过程中。
-
@MartinJames:如果我们关闭所有关于 UB 的问题,我们可以很好地关闭所有 C 问题。少数非 UB 问题是可以接受的“附带损害”。