民國104年 第2梯次 電腦軟體設計(C++)乙級 學科

第59題

若C 程式巨集( m a c r o ) 定義如下,程式執行結束後之結果為何?

題目

若C 程式巨集( m a c r o ) 定義如下,程式執行結束後之結果為何?

  1. (1) a n s 1 = 12 , a n s 2 = 23
  2. (2) a n s 1 = 12 , a n s 2 = 35
  3. (3) a n s 1 = 30 , a n s 2 = 23
  4. (4) a n s 1 = 30 , a n s 2 = 35

官方答案

(1) a n s 1 = 12 , a n s 2 = 23

解析

此題測試 C 巨集展開的運算子優先順序。若巨集本體未加括號,例如 #define MUL(x,y) x*y,則巨集只是純文字替換。呼叫 MUL(3,4) 直接得 3*4=12;呼叫 MUL(2+3,7) 展開為 2+3*7,因 * 優先於 +,先算 3*7=21,再加 2 得 23,故 ans1=12、ans2=23。若巨集寫成 (x)*(y) 才有括號保護,則 MUL(2+3,7) 會是 5*7=35(對應其他選項),但題意為未加括號的陷阱寫法,故選 1。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料