未定义行为:带有负左操作数的左移
根据 ISO C99 标准,按位左移操作 (
C 中定义良好的行为
与 C 相比,C 可以确保具有负左操作数的左移操作的良好定义行为。 ISO C -03 标准指定结果是左操作数乘以 2 的移位量次方,再以最大可表示值加 1 为模进行减法。即使在移动负值时,这种明确定义的行为也可以实现可预测的结果。
C 明确定义的行为的理由
ISO C 委员会定义行为的决定对于具有负左操作数的左移,可能是由于对各种场景中可预测结果的渴望所驱动,包括位操作和整数
实现定义的带有负左操作数的右移
带有负左操作数的按位右移运算 (>>) 是实现定义的。这意味着该行为不是由标准指定的,而是由编译器实现者自行决定。它通常取决于目标平台和特定的编译器实现。
以上是左移负数在 C 中是未定义的行为,但在 C 中是明确定义的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!