一、整數除以 0(編譯時檢測)
1、演示
#include <iostream>using namespace std;int main() {int result = 10 / 0;cout << result << endl;return 0;
}
- 程序無法運行,輸出結果
error C2124: 被零除或對零求模
2、演示解讀
- 編譯器在編譯時,就能發現
10 / 0
?,直接報錯,阻止程序生成可執行文件
二、整數除以 0(運行時檢測)
1、演示
#include <iostream>using namespace std;int main() {int a = 10;int b = 0;int result = a / b;cout << result << endl;return 0;
}
- 程序運行崩潰,輸出結果
(進程 19836)已退出,代碼為 -1073741676 (0xc0000094)。
2、演示解讀
-
由于 b 是變量,編譯器無法在編譯時檢測除零,程序可以編譯通過
-
運行時觸發異常,導致程序崩潰
三、浮點數除以 0(編譯時檢測)
1、演示
#include <iostream>using namespace std;int main() {double result = 10.0 / 0.0;cout << result << endl;return 0;
}
- 程序無法運行,輸出結果
error C2124: 被零除或對零求模
2、演示解讀
- 編譯器在編譯時,就能發現
10.0 / 0.0
?,直接報錯,阻止程序生成可執行文件
四、浮點數除以 0(運行時檢測)
1、演示
#include <iostream>using namespace std;int main() {double a = 10.0;double b = 0.0;double result = a / b;cout << result << endl;return 0;
}
- 程序運行結束,輸出結果
inf
(進程 1784)已退出,代碼為 0 (0x0)。
2、演示解讀
- 浮點數除 0 程序不會崩潰,而是返回特殊值
-
+inf
(正無窮):由10.0 / 0.0
?產生 -
-inf
(負無窮):由-10.0 / 0.0
? 產生 -
nan
(非數字):由0.0 / 0.0
? 產生
3、補充演示
負數 / 0.0
#include <iostream>using namespace std;int main() {double a = -10.0;double b = 0.0;double result = a / b;cout << result << endl;return 0;
}
- 程序運行結束,輸出結果
-inf
(進程 11416)已退出,代碼為 0 (0x0)。
0.0 / 0.0
#include <iostream>using namespace std;int main() {double a = 0.0;double b = 0.0;double result = a / b;cout << result << endl;return 0;
}
- 程序運行結束,輸出結果
nan(ind)
(進程 13408)已退出,代碼為 0 (0x0)。