我看到很多有竞争力的程序员用 C++ 中的 ((a + b) % d + d) % d 编写代码。他们为什么不只使用(a + b) % d?括号内的 + d 有什么用?它与负数有关吗?

谢谢

最佳答案

是的,你是对的。在 C++11 之前,负参数的余数运算符 % 的行为留给实现,受一些约束。并且将 d 添加到左侧参数可以提供帮助,只要该参数中的其他项总和大于或等于 -d ,通常情况并非如此。 (对于负 -a / d 的情况,da 倍数在您的特定情况下将是更好的附加常数。)

10-06 05:04