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