【发布时间】:2013-03-12 17:07:31
【问题描述】:
为什么模运算符在 C 和 Java 中不能按预期工作?
【问题讨论】:
-
余数与模数
-
非常感谢大家!真的很有帮助!
-
我更喜欢剩下的版本,但在 java 中,设计决定是不同的 :-(
-
因为负数是实现定义的?
为什么模运算符在 C 和 Java 中不能按预期工作?
【问题讨论】:
Python 的 % 运算符计算数学余数,而不是模数。根据定义,余数是一个介于 0 和除数之间的数字,它不像模数那样取决于被除数的符号。
【讨论】:
Wikipedia 有一个漂亮的表格,它显示了各种语言的操作符号。在 Python 中它是除数 (26) 的符号,在 Java/C 中是被除数 (-1) 的符号。
【讨论】:
它按规定工作。
合同是这样的
a == (a/b) * b + (a % b)
并且整数除法向零截断。因此,如果股息为负,则余数为负。
【讨论】:
不确定python,但java中的%运算符返回除法后获得的余数。
-1%26
分解:
26)-1(0
0
---
-1 ---> Remainder as (-1+0=-1)
【讨论】: