宏替换
#include "stdio.h"
#define PI 3.1415926
#define FUDGE(k) k+PI
#define PR(a) printf("a=%d\t",(int)(a))
#define PRINT(a) PR(a);putchar('\n');
#define PRINT2(a,b) PR(a);PRINT(b)
#define PRINT3(a,b,c) PR(a);PRINT2(b,c)
#define MAX(a,b) (a<b?b:a)
main()
{
int x=1,y=2;
PRINT3(MAX(x++,y),x,y);
PRINT3(MAX(x++,y),x,y);
}
自己算得: a=2 a=2 a=2
a=2 a=3 a=2
编译器执行:a=2 a=2 a=2
a=3 a=4 a=2
怎么回事?