【发布时间】:2013-10-22 16:10:42
【问题描述】:
如果我输入:
int main() { return 0 % 0; }
我得到一个错误:
error C2124: divide or mod by zero
这背后的原因是什么?答案不是零吗?
【问题讨论】:
-
为什么你认为它会是 0?
-
任何 % 0 都是未定义的。
-
这不是更多的数学问题而不是编程问题吗?
-
模是除法的余数,就这么简单。如果没有除法是可能的,那么模也不是。您对模函数的伪替代方法不适用于实际发生的情况。
-
@Havenard:关于无符号整数,定义
x%0 == 0将构成x%y < y原则的例外。关于浮点值,我认为fmod(x,0)应该被定义为零,因为从数学上讲,对于任何 x,fmod(x,y) 的 (y->0) 的限制为零。
标签: c++ visual-c++ math modulo divide-by-zero