我看到很多有竞争力的程序员用 C++ 中的 ((a + b) % d + d) % d
编写代码。他们为什么不只使用(a + b) % d
?括号内的 + d
有什么用?它与负数有关吗?
谢谢
最佳答案
是的,你是对的。在 C++11 之前,负参数的余数运算符 %
的行为留给实现,受一些约束。并且将 d
添加到左侧参数可以提供帮助,只要该参数中的其他项总和大于或等于 -d
,通常情况并非如此。 (对于负 -a / d
的情况,d
的 a
倍数在您的特定情况下将是更好的附加常数。)