#include<stdio.h>
#define S(x) x*x/x
int main()
{ int k=6,j=3;
printf("%d,%d\n",S(k+j+2),S(j+k+2));
return 0;
}
因为 S(x) 没有写成((x)*(x)/(x))
printf("%d,%d\n",S(k+j+2),S(j+k+2));
语句宏替换后为
printf("%d,%d\n",k+j+2*k+j+2/k+j+2,j+k+2*j+k+2/j+k+2);
所以输出的是:
6+3+2 * 6+3+2/6+3+2 = 6+3+12+3+0+3+2 = 29
3+6+2 * 3+6+2/3+6+2 = 3+6+6+6+0+6+2=29
k+j+2*k+j+2/k+j+2 -------> 6+3+2*6+3+2/6+3+2 = 6+3+12+3+0+3+2 = 29