使用负红利的模数计算

时间:2017-01-28 22:19:44

标签: gcc mod

我对GCC的%运算符进行了一些研究,如果它有负的红利,它似乎没有计算出正确的值。好吧,我知道海湾合作委员会的所有相关规则。

无论如何,-3%5是

  • -3由GCC和
  • 2 by Math

我现在正在使用此宏来纠正此行为:

#define mod(M, N) (M>=0 ? M%N : (N-abs(M%N))%N)
#define mod2(M, N) (M%N>=0 ? M%N : M%N + N)

它们都产生了正确的价值,但看起来很丑陋而且无效。 你能推荐一种更好(更快)的方法来进行这种计算吗?

感谢。

0 个答案:

没有答案