整数除数除以0

时间:2011-04-08 15:48:11

标签: integer division integer-division divide-by-zero

考虑整数除法

a = bq + r

其中a,b,q,r分别为:被除数,除数,商和余数。特别是当b = 0时,没有唯一的q满足给定a的等式,因此在这种情况下,商q应该是未定义的。

然而,在这种情况下确实存在唯一的r,即r = a。在商和余数总是一起定义的前提下,每当q未定义时,r都没有被定义,但是在编程中,我们经常想要使用余数运算%而不考虑除{{1} }}。我实际上遇到了我想要/的情况。

是否存在任何编程语言中的运算符,使其与if b == 0 then a else a % b end相同但在除数为0时返回除数而不是零除错误?

大多数(或所有)编程语言是否有理由为%返回零分割错误?

2 个答案:

答案 0 :(得分:2)

在数学上,余数在0和b-1之间,其中b是除数。因此,当b = 0时,r是未定义的,因为它必须是> = 0。

答案 1 :(得分:2)

是否有任何编程语言可以返回红利?不确定。我从未遇到任何人。

是否有理由认为大多数人不会退还股息? 即可。模数是CS中的常见操作,因为它是CPU上整数除法的副产品。大多数(如果不是全部)汇编语言都具有模运算,并且此运算使用与除法运算完全相同的硬件。因此,如果你不能在硬件中除以零,那么你就不能在硬件中做零模数。

这是否意味着您不能拥有支持此功能的语言?不是真的,但你必须在一个通常是单个指令的操作中添加一个if语句。这可能会导致相当大的性能损失,因此很少(如果有的话)这样做。