Q18.
執行下列C 語言程式,其輸出結果為何?
數位電子 · 乙級 · 程式語言 · Q18
難易度分析
3 / 5
本題需要精確掌握後置遞增與後置遞減運算子的執行順序,特別是在條件判斷式與回傳語句中,數值變化與表達式結果之間的先後關係。若未能區分運算子作用於變數的時機,極易在追蹤變數狀態時產生錯誤判斷。
正確答案:③b=4
③ b=4:b=4 為正確答案。傳入 x=5 至函數 f(),條件式 x--<5 使用後置遞減,先比較 5<5 為假,x 變為 4;進入 else 分支執行 return (x++),後置遞增先回傳目前值 4,再將 x 遞增,故 b 獲得回傳值 4。
錯誤選項解析
- ① b=0:b=0 為變數 b 的初始宣告值,但程式已呼叫函數 f(a) 並將回傳值重新賦值給 b,因此不會維持初始值 0。
- ② b=3:b=3 並非此程式的執行結果。若誤解 後置遞減 的執行順序,可能得出錯誤數值,但實際追蹤變數 x 的變化不會得到 3。
- ④ b=5:b=5 是常見錯誤答案。若誤以為 後置遞增 x++ 會先遞增再回傳,或誤解條件式中 x-- 的比較結果,可能得出 5,但實際上 return 語句回傳的是遞增前的原始值。
Learning Tip
"本題核心考點為 後置遞增/遞減運算子 的執行順序:先使用原值,再進行遞增或遞減。在 return (x++) 中,會先回傳 x 的目前值,然後才執行遞增。常考陷阱是混淆 前置 (++x) 與 後置 (x++) 的差異,以及條件式中運算子副作用對後續程式的影響。實務上建議避免在單一表達式中混用多個具副作用的運算子,以提升程式可讀性。"
學員答題分佈
①b=00%
②b=30%
③b=40%
④b=50%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!