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

本單元常犯錯誤總覽

錯誤類型 錯誤寫法 正確寫法 結果 為什麼
忘記宣告變數 cout << x; int x; cout << x; CE 變數使用前必須宣告;常見訊息:'x' was not declared in this scope
變數名稱不合法 int if; int if_flag; CE if 是關鍵字,不能當變數名;常見訊息:expected unqualified-id before 'if'
忘記分號 int x = 10 int x = 10; CE 陳述式結尾要加分號;常見訊息:expected ';'
指派左邊不是變數 x + y = 10; x = 10 - y; CE = 左邊必須是可以被改值的變數;常見訊息:lvalue required as left operand of assignment
運算式括號用錯 [1 + 2] * 3{1 + 2} * 3 (1 + 2) * 3 CE 改變運算順序只能用小括號 ( );中括號和大括號在 C++ 有其他用途
省略乘號 int ans = 2x; int ans = 2 * x; CE C++ 不會把 2x 當成 2 * x,乘法一定要寫 *
整數溢位 int ans = 100000 * 100000; long long ans = 100000LL * 100000; WA 兩邊都是 int 時會先用 int 計算,乘積太大會溢位
使用未初始化的局部變數 int x; cout << x; int x = 0; cout << x; WA 局部變數沒給初值時內容不可預測,可能印出垃圾值
忘記整數除法會捨去小數 cout << 7 / 2; 需要小數時用 cout << 7.0 / 2; WA 兩邊都是整數時,/ 只取商,7 / 2 會得到 3
運算子優先級搞錯 2 + 3 * 4 (2 + 3) * 4 WA * 會比 + 先算;想改變順序要加小括號