如果鍵入:爲什麼0模0是一個錯誤?
int main() { return 0 % 0; }
我回來了一個錯誤:
error C2124: divide or mod by zero
這背後的原因是什麼?答案不是零嗎?
如果鍵入:爲什麼0模0是一個錯誤?
int main() { return 0 % 0; }
我回來了一個錯誤:
error C2124: divide or mod by zero
這背後的原因是什麼?答案不是零嗎?
在數學中,x mod 0
是未定義的,因此是錯誤。
好吧我承認我沒有我不知道。 (我從來沒有想過它。)猜猜我會去Math.SE問...謝謝。 – Mehrdad
0x499602D2,你太絕對了。一個約定是x(mod 0)是x。其基本原理如下:在模運算中,z≡x(mod y)表示存在某個整數k,使得z - x = k * y。如果y = 0,那麼我們得到z - x = 0或z = x。 –
mod函數與整數除法函數實際上是相同的,除了它給你的餘數,而不是商。你不能除以零......
(BTW,順便說一句,0/0甚至不是無窮大,這是不確定的。)
從C++標準,第5.5節:
If during the evaluation of an expression the result is not mathematically defined or not in the range of representable mathematical values for its type, the behavior is undefined. [...] Treatment of division by zero, forming a remainder using a zero divider, and all floating point exceptions vary among machines, and is usually adjustable by a library function.
由於被零除的餘數在數學上是不確定的,而不管被分割的數量是多少,所以根據C++標準,答案是不確定的。
你爲什麼認爲它會是0? – 0x499602D2
@ 0x499602D2:因爲0%任何東西都是零... – Mehrdad
任何%0都是未定義的。 – 0x499602D2