负数的模运算

2023-12-13

在 C 程序中,我正在尝试以下操作(只是为了检查行为)

 x = 5 % (-3);
 y = (-5) % (3);
 z = (-5) % (-3); 

printf("%d ,%d ,%d", x, y, z); 

它给我的输出为(2, -2 , -2)在海湾合作委员会。我每次都期待有积极的结果。模数可以为负数吗?有人能解释这种行为吗?


C99 requiresa/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(使用前将#替换为@)

负数的模运算 的相关文章

随机推荐