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