Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
对于int a, b,我知道当a和恰好有一个b为负时, 和 的结果a / b取决于a % b机器。但是我总是有(a / b * b) + a % b == a什么时候b不为零?
int a, b
a
b
a / b
a % b
(a / b * b) + a % b == a
C++11 §5.6[expr.mul]/4 规定:
如果商a/b在结果的类型中是可表示的,(a/b)*b + a%b则等于a。
a/b
(a/b)*b + a%b
C11 §6.5.5/6 指定相同但措辞略有不同:
如果商a/b是可表示的,则表达式(a/b)*b + a%b应等于a;否则,两者的行为a/b和a%b是未定义的。
a%b