30 下列以 C 程式語言撰寫之程式執行後產生之輸出為何? #include #define MAX(a, b) (a < b ? b : a) #define PRINT1(x) printf(“%d”, x) #define PRINT3(x, y, z) PRINT1(x), PRINT1(y), PRINT1(z) main() { int m1 = 1, m2 = 3; PRINT3( MAX( m1++, --m2), m1, m2); }
(A) 1 2 1
(B) 2 2 2
(C) 2 3 2
(D) 本程式編譯時,編譯器(Compiler)發出錯誤訊息,不能執行而無輸出結果產生

答案:登入後查看
統計: A(80), B(79), C(54), D(55), E(0) #173895

詳解 (共 2 筆)

#311636
由式子 #define  MAX(a, b)    (a < b ? b : a) 
帶入參數得到 MAX( m1++, --m2)   =>  (m1++  < --m2  ? --m2  : m1++ ) 
1++ < --3    =>  比較時系統看到m1=1, m2=2, 
比較後結果為true,且結束後 m1=2, m2=2;

取冒號的左邊 --m2    
m2=2  =>  --2 系統收到值為1
此時狀態m1=2, m2=1
14
0
#236241

有沒有高手解釋一下為什是A?

0
0