在 C 程序中,我正在尝试以下操作(只是为了检查行为)
x = 5 % (-3);
y = (-5) % (3);
z = (-5) % (-3);
printf("%d ,%d ,%d", x, y, z);
它给我的输出为(2, -2 , -2)
在海湾合作委员会。我每次都期待有积极的结果。模数可以为负数吗?有人能解释这种行为吗?
C99 requires当a/b
可以表示为:
(a/b) * b
+ a%b
应等于a
从逻辑上讲,这是有道理的。 Right?
让我们看看这会导致什么:
示例A.5/(-3)
is -1
=> (-1) * (-3)
+ 5%(-3)
= 5
这只有在以下情况下才会发生:5%(-3)
is 2.
示例 B.(-5)/3
is -1
=> (-1) * 3
+ (-5)%3
= -5
这只有在以下情况下才会发生:(-5)%3
is -2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)