Re: [問題] 關於使用define方式輸出結果的問題

看板C_and_CPP作者 (恋さや)時間16年前 (2010/02/27 18:47), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《jelt (Jelt)》之銘言: : 這個問題其實是看普考考古題看到的,題目如下: : #include<stdio.h> : #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) : int main(){ : int m1=1, m2=3; : PRINT3(MAX(m1++, --m2), m1, m2); : getch(); : return 0; : } PRINT3(MAX(m1++, --m2), m1, m2); => PRINT1(MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2) => PRINT1( ( m1++ < --m2 ? --m2 : m1--) ), PRINT1(m1), PRINT1(m2) detail: step1: m1++ < --m2 結果為真 : 1 < 2 執行完 : m1 == 2, m2 == 2 step2: --m2 執行完 : m2 == 1 step3: MAX 結果 為 1 這個問題剛好 Effective C++ 一書中的 Item 1 中有提到 多用const 跟 inline function 來取代巨集吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.22.35 ※ 編輯: loveme00835 來自: 114.45.22.35 (02/27 18:52)

02/27 19:08, , 1F
過去看的中文書,講的都超不詳細,過然還是要原文書比較豐富
02/27 19:08, 1F

02/27 22:12, , 2F
Effective好像也有中文的吧...
02/27 22:12, 2F
文章代碼(AID): #1BYFXRW3 (C_and_CPP)
文章代碼(AID): #1BYFXRW3 (C_and_CPP)