为什么Java和C中-1%26=-1而在Python中是25?

4 投票
4 回答
1200 浏览
提问于 2025-04-17 20:00

为什么在C和Java中,取模运算符的表现不如预期?

4 个回答

1

它的工作方式符合规定。

这个合同是

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

而且整数除法会向零取整。所以如果被除数是负数,你得到的余数也是负数。

5

维基百科上有一个很好的表格,展示了不同编程语言中取模运算的符号。在Python中,结果的符号取决于除数(比如26),而在Java/C语言中,结果的符号则取决于被除数(比如-1)。

3

Python中的百分号(%)运算符计算的是数学上的余数,而不是模数。余数的定义是一个介于0和除数之间的数字,它不受被除数符号的影响,这一点和模数不同。

撰写回答