民國104年 第2梯次 電腦軟體設計(C++)乙級 學科
第59題
若C 程式巨集( m a c r o ) 定義如下,程式執行結束後之結果為何?
題目
若C 程式巨集( m a c r o ) 定義如下,程式執行結束後之結果為何?
- (1) a n s 1 = 12 , a n s 2 = 23
- (2) a n s 1 = 12 , a n s 2 = 35
- (3) a n s 1 = 30 , a n s 2 = 23
- (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 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。