C语言的%运算符与google calculator的mod不同

C语言的%运算符与google calculator的mod不同,c,math,C,Math,我计算-15 mod 18,以下是结果: C:-15%18=-15() 谷歌:-15 mod 18=3(在谷歌的搜索框中键入-15 mod 18) 和-9 mod 5的结果: C:-9%5=-4 谷歌:-9 mod 5=1 为什么这些是不同的?谷歌如何计算他们的mod呢?因为谷歌中的%操作符是一个模操作符,而C中的%操作符是一个余数操作符 模和余数运算符与负值有关。对于模运算符,结果的符号是除数的符号,对于余数运算符,结果的符号是被除数的符号 因为Google中的%运算符是模运算符,而C中的%运

我计算-15 mod 18,以下是结果:
C:
-15%18=-15
()
谷歌:
-15 mod 18=3
(在谷歌的搜索框中键入
-15 mod 18

和-9 mod 5的结果:
C:
-9%5=-4

谷歌:
-9 mod 5=1


为什么这些是不同的?谷歌如何计算他们的mod呢?

因为谷歌中的
%
操作符是一个模操作符,而C中的
%
操作符是一个余数操作符


模和余数运算符与负值有关。对于模运算符,结果的符号是除数的符号,对于余数运算符,结果的符号是被除数的符号

因为Google中的
%
运算符是模运算符,而C中的
%
运算符是余数运算符


模和余数运算符与负值有关。对于模运算符,结果的符号是除数的符号,对于余数运算符,结果的符号是被除数的符号

谷歌的计算器有-15模18

-15 = 18*(-1) + 3
给出3的余数, 而C将其评估为

-15 = 18*(0) - 15
因此表达式变成-15

总的来说

a = (a/b)*b + a%b

保持不变。

谷歌的计算器可以-15 mod 18 as

-15 = 18*(-1) + 3
给出3的余数, 而C将其评估为

-15 = 18*(0) - 15
因此表达式变成-15

总的来说

a = (a/b)*b + a%b

保留。

因为谷歌不是C编译器,也不需要遵循与C编译器相同的规则?可能重复的我也会注意,这也是相关的。因为谷歌不是C编译器,也不需要遵循与C编译器相同的规则?可能重复的我也会注意,这也是相关的。
a=(a/b)*b+a%b
始终保持不变,无论您使用的是哪种定义。放置
a=-15
b=18
。然后,
a%b=a-(a/b)*b=-15-(-15/18)*18=-15+0=-15
,因为“/”是整数除法。谷歌的计算器(甚至Python)都不是这样计算的。如果
(-15)%18
被定义为3,那么
(-15)/18
应该被定义为-1,而不是0。给两者下不一致的定义是愚蠢的。好吧,我明白了。我是沿着C的思路思考的,其中-15和18的整数除法计算为0,而不是-1。我的错。
a=(a/b)*b+a%b
无论您使用的是哪种定义,都始终有效。将
a=-15
b=18
。然后,
a%b=a-(a/b)*b=-15-(-15/18)*18=-15+0=-15
,因为“/”是整数除法。谷歌的计算器(甚至Python)都不是这样计算的。如果
(-15)%18
被定义为3,那么
(-15)/18
应该被定义为-1,而不是0。给两者下不一致的定义是愚蠢的。好吧,我明白了。我是沿着C的思路思考的,其中-15和18的整数除法计算为0,而不是-1。我的错。