看板 C_and_CPP 關於我們 聯絡資訊
這個問題其實是看普考考古題看到的,題目如下: #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
vizshala:因為你的b代表--m2 02/27 18:39
loveme00835:理解巨集運作原理請把它全部代換掉, 因為他不是函數唷 02/27 18:40
jelt:原來如此啊! 我不應該用函是的方式去思考,感謝告知! 02/27 19:06