好的,所以我知道并理解 MOD 和 REM 之间的区别。我也知道 C 的 % 操作是 REM 操作。我想知道,如果有一些 C 库或函数用于显式 MOD,但无法在网上找到。
具体来说,我希望(-1)%4 == 3
是真实的。在 C(-1)%4 = -1
中,因为它是余数。最好我想避免使用绝对值,甚至更好的是使用一些我似乎找不到的内置函数。
任何建议将不胜感激!
我能想到的最佳选择是计算:
((-1 % 4) + 4 ) % 4
在这里你可以-1
用任何值替换,你不会MOD
得到REM
。
做你期望的最常见的方法是:
((a % b) + b ) % b
它之所以有效,是因为(a % b)
]-b 中是一个数字;b[ 所以(a % b) + b
是正数(在 ]0; 2 * b[)并且添加b
并没有改变 mod。
做就是了,
int mod(int a, int b)
{
int res = a % b;
return(res < 0 ? (res + b) : res);
}
res
将运算后的每个负数MOD
相加b
得到a
&的模数b
。