錯誤代碼片段(圖中紅框):
if (condition1) {
...
} else if (condition2); { // ← 這裡的分號是禍根
...
}
else if (cond); 等價於:
else if (cond) {
; // 空語句
}
// 後面的 { ... } 變成獨立代碼塊,無條件執行
else if (condition2) { // 刪除分號
...
}
if/else 必加大括號」習慣,即使只有一條語句。-Wempty-body (GCC/Clang) 或 /Wall (MSVC) 捕獲空語句。