这个问题困扰了我两天,终于搞懂了,先上代码
#include <stdio.h>
#define ABC(x) x*x
int main()
{
int a,k=3;
a = ++ABC(k+1);
printf("%d\n",a);
return 0;
}
关于以上代码段的运行结果为什么输出是9的问题,由于带参宏不会对参数自行添加括号运算,因此a 的计算展开式可写为 ++k+1*k+1 这样就很明显了,由于运算优先级的关系,先执行++k,即k先进行自加,k的值变成了4,然后a=4+1*4+1,结果就为9啦~