本單元常犯錯誤總覽
| 錯誤類型 | 錯誤寫法 | 正確寫法 | 結果 | 為什麼 |
|---|---|---|---|---|
| 忘記宣告變數 | 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 | * 會比 + 先算;想改變順序要加小括號 |