模运算符产生负值:数学解释
模运算符 % 当应用于负数时,可以产生不同的结果,具体取决于关于实施。这可能令人费解,但了解模运算符的数学定义可以阐明这种行为。
根据 ISO14882:2011(e) 5.6-4,模运算符返回除法的余数第一个表达由第二个表达。如果第二个操作数为零,则行为未定义。对于整数操作数,商是舍去任何小数部分的代数商。
为了说明这一点,请考虑以下示例:
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
(-7 % 3) = -1
(7 % -3) = 1
请注意,在情况下,代数商是相同的 (-2)。当两个操作数具有不同符号时,余数的差异是由实现定义的余数符号引起的。
以上是为什么模运算符使用负数会产生负结果?的详细内容。更多信息请关注PHP中文网其他相关文章!