Q1.
C++語言將分號放在 if 指令敘述右小括號後面,會發生以下何種情況?
電腦軟體設計(C++) · 乙級 · C++ · Q1
難易度分析
3 / 5
本題要求區分程式設計中不同類型的錯誤,且涉及 C++ 敘述終止符的特殊語法特性,屬於需要辨別「語法合法但邏輯不符預期」之陷阱題。
正確答案:①邏輯錯誤
① 邏輯錯誤:在 `if (條件);` 中,分號會形成空敘述(empty statement),導致條件判斷後不執行任何動作,其後的程式區塊會無條件執行,程式能正常編譯與執行但產生非預期結果,屬於典型的邏輯錯誤。
錯誤選項解析
- ② 語法錯誤:語法錯誤是指違反 C++ 語法規則導致無法通過編譯。在 if 右小括號後加分號在語法上是合法的(分號視為空敘述),編譯器不會報錯,因此不是語法錯誤。
- ③ 編譯錯誤:編譯錯誤會使編譯器拒絕產生執行檔。此情況編譯器會正常通過編譯,僅在部分編譯器可能發出警告(如 `-Wempty-body`),但不會產生編譯錯誤。
- ④ 執行時期例外錯誤:執行時期例外錯誤是指程式運行時拋出異常(如除以零、記憶體存取違規)。此情況程式會正常執行,不會觸發任何例外機制,只是流程控制偏離預期。
Learning Tip
"此題考 if 敘述後多餘分號造成的影響。常考陷阱是混淆語法錯誤與邏輯錯誤:語法錯誤會導致編譯失敗,而邏輯錯誤能編譯執行但結果錯誤。實務上建議開啟編譯器警告選項(如 GCC 的 `-Wextra`),可偵測此類空主體問題。切記:分號 = 空敘述終止符,放在 if 條件後會使條件判斷失效。"
學員答題分佈
①邏輯錯誤0%
②語法錯誤0%
③編譯錯誤0%
④執行時期例外錯誤0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!