瀏覽單個文章
rockindy
Major Member
 

加入日期: Nov 2001
文章: 170
引用:
作者@"@
再來一題
#define MAX (a,b) (a<b ?b:a)
#define PRINT1(x) printf("%d",x)
#define PRINT2(x,y,z) PRINT1(x),PRINT1(y),PRINT1(z)


int m1=1,m2=3;
PRINT2 (MAX(m1++,--m2),m1,m2);

這個怎樣看


不負責推演:

PRINT2 (MAX(m1++,--m2),m1,m2);

PreProcessing:
=> PRINT1(MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", MAX(m1++, --m2)), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), PRINT1(m1), PRINT1(m2);
=> printf("%d", m1++ < --m2 ? --m2 : m1++), printf("%d", m1), printf("%d", m2);

Executing
=> printf("%d", 1 < 2 ? 1 : 2), printf("%d", 2), printf("%d", 1);
=> 121
舊 2015-05-06, 09:15 PM #35
回應時引用此文章
rockindy離線中