[問題] 關於使用define方式輸出結果的問題
這個問題其實是看普考考古題看到的,題目如下:
#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
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):