0

我对 GCC 的 % 运算符进行了一些研究,如果它有负股息,它似乎无法计算正确的值。好吧,我知道GCC的所有相关规则。

无论如何,-3%5 是

  • -3 由 GCC 和
  • 2 由数学

我现在使用这个宏来纠正这种行为:

#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)

它们都产生正确的价值,但看起来丑陋且无效。你能推荐任何更好(更快)的方法来做这个计算吗?

谢谢。

4

0 回答 0