问题遇到的现象和发生背景
为什么输出值是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
为什么输出值是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
