語法書 / AA 競程語法書 上冊 / 附錄 / J. Level 0 常見未定義行為速查表

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; 確認索引在 0n - 1
同一運算式中多次修改同一變數 int x = i + ++i; 把修改拆成多行,讓順序清楚
void 函式沒有回傳值 int f() { } 每條路徑都要 return 合法值