为什么输出值是10而不是18?
#include <stdio.h>
#define ADD(x) x+x
void main()
{
int a=2,b=1;
printf("%d\n",3*ADD(a+b));
}
10
因为宏替换是替换位置,不是计算出结果
ADD(1+2)其实是1+2+1+2
所以3*2+1+2+1=10
当前的3 * ADD(a+b)ADD(a+b)展开后的表达式是
3 * a + b + a + b = 3 * 2 + 1 + 2 + 1 = 10
得改成#define ADD(x) ((x)+(x))才是你想的结果