帮俺解释以下下面的题如何?

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:26:55
# define ADD(x) (x)+(x)
main()
{
int a=4 b=6c=7;
int d=ADD(a+b)*c;
printf("d=%d",d);
}

这个是b=6, c=7吧?

如果是,那就是编译预处理阶段,编译器把ADD换成
(a+b)+(a+b)(这里形参x用实参a+b替代)
然后你的d=ADD(a+b)*c;就变成了
d = (a+b)+(a+b)*c;
运行的时候算出来的值就是80

语法错误:int a=4,b=6,c=7;
ADD(a+b)*c
(x)+(x)*c
(a+b)+(a+b)*c
(4+6)+(4+6)*7
10+10*7
10+70
80

70