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

看板C_and_CPP作者 (Jelt)時間16年前 (2010/02/27 18:25), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
這個問題其實是看普考考古題看到的,題目如下: #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; } 顯示結果為 121 我搞不懂,我自己驗算怎麼算都是"222" 可是用Dev-C++結果也是"121" 我怎麼想都想不通 PRINT3(MAX(m1++, --m2), m1, m2); --m2,m2=2,當然因該回傳2啊,為什麼會變成"1" --m2也只是讓m2=2, 為啥之後的PRINT1(z)會變成"1" 還請知道原因的前輩告知,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.201.170

02/27 18:39, , 1F
因為你的b代表--m2
02/27 18:39, 1F

02/27 18:40, , 2F
理解巨集運作原理請把它全部代換掉, 因為他不是函數唷
02/27 18:40, 2F

02/27 19:06, , 3F
原來如此啊! 我不應該用函是的方式去思考,感謝告知!
02/27 19:06, 3F
文章代碼(AID): #1BYFC5fB (C_and_CPP)
文章代碼(AID): #1BYFC5fB (C_and_CPP)