LONGEPASS
數位電子/程式語言/Q80
中等
正確率 -
Q80.

C 語言程式中,a=13,b=6,num=0,下列敘述何者正確?

數位電子 · 乙級 · 程式語言 · Q80

難易度分析

3 / 5

此題屬於複選題型,考生需同時掌握前置與後置遞增/遞減運算子的作用順序,以及複合指定運算子的展開規則。由於必須精確判斷多個敘述的正誤,且選項間存在易混淆的運算邏輯陷阱,故評定為中等難度。

正確答案 (複選):①, ③

  • ① 執行num=(++a)+(++b)後,num=21、a=14、b=7:前置遞增運算子 (++a) 會先將變數值加 1 再參與運算。a 由 13 變為 14,b 由 6 變為 7,故 num = 14 + 7 = 21,結果正確。
  • ③ 執行a+=a+(b++)後,num=0、a=32、b=7:複合指定運算子 (+=) 展開為 a = a + a + (b++)。b++ 先取值 6 後遞增為 7,故 a = 13 + 13 + 6 = 32,num 未被異動仍為 0,結果正確。

錯誤選項解析

  • ② 執行num=(a++)+(b++)後,num=21、a=14、b=7:後置遞增運算子 (a++) 會先使用原始值參與運算後才遞增。應為 num = 13 + 6 = 19,而非 21,故敘述錯誤。
  • ④ 執行a*=b--後,num=0、a=65、b=5:複合指定運算子 (*=) 展開為 a = a * (b--)。b-- 先取值 6 後遞減為 5,故 a = 13 × 6 = 78,而非 65,故敘述錯誤。
Learning Tip

"本題核心考點為 C 語言遞增/遞減運算子的前置與後置差異 及 複合指定運算子的展開規則。前置型(++a)先加後用,後置型(a++)先用後加,此為檢定常考陷阱。另需注意複合指定運算子如 `a+=b` 等價於 `a=a+b`,運算順序不可混淆。實務撰寫程式時,應避免在同一運算式中對同一變數多次遞增/遞減,以免產生 未定義行為 (Undefined Behavior)。"

學員答題分佈

①執行num=(++a)+(++b)後,num=21、a=14、b=70%
②執行num=(a++)+(b++)後,num=21、a=14、b=70%
③執行a+=a+(b++)後,num=0、a=32、b=70%
④執行a*=b--後,num=0、a=65、b=50%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目