如果我输入:
int main() { return 0 % 0; }
我收到了一个错误:
error C2124: divide or mod by zero
这背后的原因是什么?答案不是零吗?
答案 0 :(得分:11)
在数学中,x mod 0
未定义,因此错误。
答案 1 :(得分:3)
从C ++标准,第5.5节:
如果在表达式的求值期间,结果未在数学上定义或未在其类型的可表示数学值的范围内,则行为未定义。 [...]除零处理,使用零分隔符形成余数,所有浮点异常因机器而异,通常可通过库函数调整。
由于除数的余数在数学上是未定义的,因此除非被分割的数字,否则根据C ++标准,答案是未定义的。
答案 2 :(得分:2)
mod函数实际上与整数除法函数相同,只是它给出了余数,而不是商。你不能除以零......
(顺便说一句,顺便说一下,0/0甚至不是无限的,它是不确定的。)