J. Level 0 常見未定義行為速查表
未定義行為(undefined behavior, UB)代表 C++ 標準沒有規定結果。程式可能看似正常、印出怪值、直接當掉,或換一台電腦就不同。
| 常見 UB | 例子 | 怎麼避免 |
|---|---|---|
| 有號整數溢位 | int x = 2000000000 + 2000000000; |
估算運算過程最大/最小值,必要時用 long long |
| 區域變數未初始化就使用 | int sum; cout << sum; |
宣告時給初始值,例如 int sum = 0; |
| 整數除以 0 或取餘 0 | x / y,但 y == 0 |
運算前確認除數不是 0 |
| 陣列越界 | int a[10]; a[10] = 1; |
確認索引在 0 到 n - 1 |
| 同一運算式中多次修改同一變數 | int x = i + ++i; |
把修改拆成多行,讓順序清楚 |
非 void 函式沒有回傳值 |
int f() { } |
每條路徑都要 return 合法值 |