【发布时间】:2012-01-09 06:24:02
【问题描述】:
我对这些忽略模运算的数学定义的语言(Java、C ...)很好奇。
在模块操作中返回负值有什么意义(根据定义,应该总是返回一个正数)?
【问题讨论】:
-
没有定义说任何事情都应该是“总是积极的”。模算术是关于等价类的,任何代表都和其他代表一样好。
-
@OliCharlesworth:C99 是否对模运算指定了任何约束?
-
如果有一个模运算产生规范代表,那将是很好。
-
@Matt:是的,隐含的。它要求
(a/b)*b + a%b == a,并且该除法截断为零。 -
@KerrekSB 这里的问题是负数与正数属于不同的等价类,这与数学模数不同。