語法書 / AA 競程語法書 上冊 / 第七單元 / 本單元常犯錯誤總覽

本單元常犯錯誤總覽

# 錯誤描述 類型 ✗ 錯誤寫法 ✓ 正確寫法
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]) 會限制大小 編譯器忽略中括號內的數字