11

对于int a, b,我知道当a和恰好有一个b为负时, 和 的结果a / b取决于a % b机器。但是我总是有(a / b * b) + a % b == a什么时候b不为零?

4

1 回答 1

19

C++11 §5.6[expr.mul]/4 规定:

如果商a/b在结果的类型中是可表示的,(a/b)*b + a%b则等于a

C11 §6.5.5/6 指定相同但措辞略有不同:

如果商a/b是可表示的,则表达式(a/b)*b + a%b应等于a;否则,两者的行为a/ba%b是未定义的。

于 2012-09-02T01:07:57.713 回答