了解模运算符对负值的行为
已知模运算符与负操作数一起使用时会产生不同的结果。为了深入研究这一点,让我们考虑以下操作:
std::cout << (-7 % 3) << std::endl; // Output: -1 std::cout << (7 % -3) << std::endl; // Output: 1
根据 ISO 标准的基本原理
根据 ISO14882:2011(e) 5.6-4,模运算符 (%) 产生第一个表达式除以第二个表达式的余数。然而,对于像我们这样的整数操作数,除法运算符 (/) 执行整数除法,并丢弃任何小数部分。
数学分解
让我们分解计算为了清楚起见:
实现定义的行为
需要注意的是,当两个操作数均为负数时,余数的符号是实现定义的。然而,从 ISO14882:2011(e) 开始,该行为不再像其前身 ISO14882:2003(e) 中那样明确说明。
以上是模运算符如何处理负数?的详细内容。更多信息请关注PHP中文网其他相关文章!