0

好的,所以我知道并理解 MOD 和 REM 之间的区别。我也知道 C 的 % 操作是 REM 操作。我想知道,如果有一些 C 库或函数用于显式 MOD,但无法在网上找到。

具体来说,我希望(-1)%4 == 3是真实的。在 C(-1)%4 = -1中,因为它是余数。最好我想避免使用绝对值,甚至更好的是使用一些我似乎找不到的内置函数。

任何建议将不胜感激!

4

3 回答 3

3

我能想到的最佳选择是计算:

((-1 % 4) + 4 ) % 4

在这里你可以-1用任何值替换,你不会MOD得到REM

于 2013-11-08T14:35:59.223 回答
0

做你期望的最常见的方法是:

((a % b) + b ) % b

它之所以有效,是因为(a % b)]-b 中是一个数字;b[ 所以(a % b) + b是正数(在 ]0; 2 * b[)并且添加b并没有改变 mod。

于 2013-11-08T14:53:00.367 回答
0

做就是了,

int mod(int a, int b)
{
    int res = a % b;
    return(res < 0 ? (res + b) : res);
}

res将运算后的每个负数MOD相加b得到a&的模数b

于 2013-11-08T14:48:34.073 回答