对于int a, b
,我知道当a
和b
中只有一个为负数时,a / b
和a % b
的结果取决于机器。但是当(a / b * b) + a % b == a
不为零时,我总是b
吗?
答案 0 :(得分:18)
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/b
和a%b
的行为都是未定义的。