本單元常犯錯誤總覽
| # | 錯誤描述 | 類型 | ✗ 錯誤寫法 | ✓ 正確寫法 |
|---|---|---|---|---|
| 1 | 非 void 函式忘記 return(UB) | CE/RE | int add(int x, int y) { int s = x + y; } |
int add(int x, int y) { return x + y; } |
| 2 | 函式在 main 之後定義 | CE | 先 int main(),再 int add() |
先 int add(),再 int main() |
| 3 | 函式不能巢狀宣告 | CE | int main() { int f() { } } |
所有函式定義在最外層 |
| 4 | Pass by value 時以為會修改外面的變數 | WA | void inc(int x) { x++; } |
void inc(int &x) { x++; } |
| 5 | max/min 參數型態不一致 | CE | max(5, 6LL) |
max(5LL, 6LL) 或 max({5, 6}) |
| 6 | 在函式內用 sizeof(arr) 計算陣列大小 | WA | int sz = sizeof(arr) / sizeof(int); |
把大小當作參數傳進來 |
| 7 | 預設參數在沒預設值參數後面 | CE | int f(int a = 5, int b) |
int f(int a, int b = 5) |
| 8 | 陣列參數中括號的大小被忽略 | 概念 | 認為 void f(int a[5]) 會限制大小 |
編譯器忽略中括號內的數字 |