Mod 不能归零吗?为什么 X % 0 无效
作为程序员,我们经常依靠模运算来求余数。但是,执行 X % 0 会引发错误或产生意外行为。为什么会这样?
未定义的行为
根据 C 标准 (2003),X % 0 是无效表达式。第 5.6/4 节指出:
“...如果 / 或 % 的第二个操作数为零,则行为未定义...”
因此,任何尝试执行的代码此操作将调用未定义的行为 (UB)。
实现定义的行为
与模运算相关的另一个令人困惑的行为涉及负数。例如,-5 % 2 可能并不总是产生与 -(5 % 2) 相同的结果。标准规定:
“...如果两个操作数都非负,则余数为非负;如果不是,则余数的符号是实现定义的。”
换句话说,负数模运算的行为并未由标准明确定义,并且可能因实现而异。
以上是为什么编程时X%0无效?的详细内容。更多信息请关注PHP中文网其他相关文章!