帮我分析下这个题目#define ADD(x) x+xmain(){int m=1,n=2,k=3;int sum=ADD(m+n)*k;printf(“sum=%d”,sum);}上面程序的运行结果是( B )A)sum=9 B) sum=10 C) sum=12 D) sum=18请说明清楚!

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/21 03:15:45

帮我分析下这个题目
#define ADD(x) x+x
main()
{
int m=1,n=2,k=3;
int sum=ADD(m+n)*k;
printf(“sum=%d”,sum);
}
上面程序的运行结果是( B )
A)sum=9 B) sum=10 C) sum=12 D) sum=18
请说明清楚!

这个程序主要就是带参数的宏替换
宏替换展开后就是直接的字符替换
ADD(x) x+x
ADD(m+n) 调用后 直接 用 m+n 替换 x
所以 ADD(m+n)*k 就变成了
m+n+m+n*k
然后就是表达式的计算了
所以
结果是 10
选 B