如何使用宏?

How to use macros?

为什么答案是a=71?为什么在 运行 这个程序的最后答案不是根据:m1(3,2,1)=7 ....a=m2(7,21,14)=7*21 +14

#define m1(a,b,c) a*b+c
#define m2(x) m1( (x), (x*3), (x*2))

int main()
{
   int a;
   a=m2(m1(3,2,1));
   return 0;
}

如果你用 -E 标志编译(只运行预处理器,你会得到:

int main()
{
   int a;
   a=(3*2 +1)*(3*2 +1*3)+(3*2 +1*2);
   return 0;
}