語法書 / AA 競程語法書 下冊 / 第十二單元 / 本單元常犯錯誤總覽

本單元常犯錯誤總覽

# 錯誤描述 錯誤類型 ✗ 錯誤寫法 ✓ 正確寫法
1 全域變數與標準函式庫撞名 編譯錯誤(ambiguous) bits 之下全域 int count; 換個名字(cnt
2 auto 宣告沒有初始值 編譯錯誤 auto x; cin >> x; 明寫型態 int x;
3 auto 接 e 記法,推成 double 精度差 1 的隱形錯 auto x = 1e18; long long x = ...LL;
4 autosize() - 1 倒著走 RE(無號環繞) for (auto i = v.size() - 1; i >= 0; i--) for (int i = (int)v.size() - 1; ...)
5 整個 vector 傳值進函式 TLE(整份複製) void f(vector<int> v) void f(const vector<int> &v)
6 range-based for 忘記 &,改到複本 邏輯錯誤(悄悄不動) for (int x : v) cin >> x; for (int &x : v) cin >> x;
7 ?: 當左值但兩分支型態不同 編譯錯誤 a 是 int、b 是 long long:(f ? a : b) += 1; 型態一致,或改用 if else
8 二維陣列寫成 g[i, j] 邏輯錯誤(逗號運算子) g[1, 2](其實是 g[2] g[1][2]
9 巨集參數沒包括號 Wrong Answer #define SQ(x) x * x #define SQ(x) ((x) * (x))
10 關同步後混用兩套輸入輸出 順序不保證 開場白+printf 從頭到尾只選一套
13 大量輸出用 endl TLE 百萬行 << endl << '\n'