为什么0 mod 0出错?

时间:2013-10-15 00:17:37

标签: c++ visual-c++ math modulo divide-by-zero

如果我输入:

int main() { return 0 % 0; }

我收到了一个错误:

error C2124: divide or mod by zero

这背后的原因是什么?答案不是零吗?

3 个答案:

答案 0 :(得分:11)

在数学中,x mod 0未定义,因此错误。

答案 1 :(得分:3)

从C ++标准,第5.5节:

  

如果在表达式的求值期间,结果未在数学上定义或未在其类型的可表示数学值的范围内,则行为未定义。 [...]除零处理,使用零分隔符形成余数,所有浮点异常因机器而异,通常可通过库函数调整。

由于除数的余数在数学上是未定义的,因此除非被分割的数字,否则根据C ++标准,答案是未定义的。

答案 2 :(得分:2)

mod函数实际上与整数除法函数相同,只是它给出了余数,而不是商。你不能除以零......

(顺便说一句,顺便说一下,0/0甚至不是无限的,它是不确定的。)