C语言的%运算符与google calculator的mod不同
我计算-15 mod 18,以下是结果: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中的%运
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。我的错。