C++ 03状态中的$ 5.6/4 - "如果两个操作数都是非负的,那么余数是非负的;如果不是,则余数的符号是实现定义的74).
注74是
根据正在进行的ISO C修订工作,整数除法的首选算法遵循ISO Fortran标准ISO/IEC 1539:1991中定义的规则,其中商始终向零舍入.
C++ 0x状态 -
$ 5.6/4-"对于积分操作数,/运算符产生代数商,丢弃任何小数部分; 79如果商a/b在结果类型中可表示,
(a/b)*b + a%b则等于a.
注79说
这通常被称为截断为零.
所以我有两个问题:
有人可以解释这个"截断为零"的概念吗?
具有负操作数的模数是否在C++ 0x中定义为行为?
为什么模运算符在C和Java中没有按预期工作?