看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)
jelt:過去看的中文書,講的都超不詳細,過然還是要原文書比較豐富 02/27 19:08
hilorrk:Effective好像也有中文的吧... 02/27 22:12