Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的显式MOD?_C_Modulo - Fatal编程技术网

C中的显式MOD?

C中的显式MOD?,c,modulo,C,Modulo,好的,所以我知道并理解MOD和REM之间的区别。我也知道C的%操作是REM操作。我想知道,但在网上找不到,是否有一些C库或函数用于显式修改 具体来说,我希望(-1)%4==3为真。在C(-1)%4=-1中,因为它是一个余数。我最好避免使用绝对值,最好是使用一些我似乎找不到的内置函数 任何建议都将不胜感激 我能想到的最佳选择是计算: ((-1 % 4) + 4 ) % 4 在这里,您可以用任何值替换-1,您将得到MODnotREM我能想到的最佳选择是计算: ((-1 % 4) + 4 ) % 4

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

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


任何建议都将不胜感激

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

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

在这里,您可以用任何值替换
-1
,您将得到
MOD
not
REM
我能想到的最佳选择是计算:

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

在这里,您可以用任何值替换
-1
,您将得到
MOD
not
REM
我能想到的最佳选择是计算:

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

在这里,您可以用任何值替换
-1
,您将得到
MOD
not
REM
我能想到的最佳选择是计算:

((-1 % 4) + 4 ) % 4
在这里,您可以用任何值替换
-1
,您将得到
MOD
而不是
REM

只需执行即可

int mod(int a, int b)
{
    int res = a % b;
    return(res < 0 ? (res + b) : res);
}
intmod(inta,intb)
{
int res=a%b;
返回(res<0?(res+b):res);
}
MOD
操作后的每个负
res
内容都添加到
b
中,以获得
a
b
的模数

只要做

int mod(int a, int b)
{
    int res = a % b;
    return(res < 0 ? (res + b) : res);
}
intmod(inta,intb)
{
int res=a%b;
返回(res<0?(res+b):res);
}
MOD
操作后的每个负
res
内容都添加到
b
中,以获得
a
b
的模数

只要做

int mod(int a, int b)
{
    int res = a % b;
    return(res < 0 ? (res + b) : res);
}
intmod(inta,intb)
{
int res=a%b;
返回(res<0?(res+b):res);
}
MOD
操作后的每个负
res
内容都添加到
b
中,以获得
a
b
的模数

只要做

int mod(int a, int b)
{
    int res = a % b;
    return(res < 0 ? (res + b) : res);
}
intmod(inta,intb)
{
int res=a%b;
返回(res<0?(res+b):res);
}

MOD
操作后的每个负
res
内容都添加到
b
中,以获得
a
b
的模数

最常见的方法是:

((a % b) + b ) % b

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

最常见的方法是:

((a % b) + b ) % b

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

最常见的方法是:

((a % b) + b ) % b

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

最常见的方法是:

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

请看一行:
返回(a<0?(a%b+b):(a%b));
一行:
返回(a<0?(a%b+b):(a%b));
一行:
返回(a<0?(a%b+b):(a%b);
一行:
返回(a<0?(a%b+b):(a%b));