麻烦高手给解释一下C语言的题

#defineADD(x)x*xmain(){inta=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}这个程序是怎么运行的啊?麻烦高手... #define ADD(x) x*x
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d); }
这个程序是怎么运行的啊? 麻烦高手把过程分析一下 谢谢了
关键是d=ADD(a+b)*c 的分析啊 是怎么运算的
展开
 我来答
鬼哭神嚎菩提树
2008-03-11 · TA获得超过163个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:247万
展开全部
#define ADD(x) x*x
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d); }

这里使用了宏
#define ADD(x) x*x
这里表示:程序在预编译的时候遇到ADD(x)的结构时自动将其替换成x*x

这样在你的程序被替换后就变成这个样子了:
int a=4,b=6,c=7,d=a+b*a+b*c;
printf("d=%d",d); }

所以我的理解你是不是想把算式变成这样:
d=(a+b)*(a+b)*c
那你应该把宏改写成:
#define ADD(x) (x)*(x)
hkhkq
2008-03-11
知道答主
回答量:17
采纳率:0%
帮助的人:19万
展开全部
那是宏原样替换

容易误倒人的是ADD(x) x*x
它是先替换了再编译,而不是先计算出结果再替换

d=ADD(a+b)*c 容易被理解成(a+b)*(a+b)*c=10*10*7=700

实际上替换以后是ADD(a+b)变成了a+b*a+b
结果就是4+6*4+6*7=4+24+42=70
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
87725981
2008-03-11 · 超过28用户采纳过TA的回答
知道答主
回答量:542
采纳率:0%
帮助的人:382万
展开全部
#define ADD(x) x*x
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d); }

根据宏定义,展开后d=a+b*a+b*c
如果你的目的是想求(a+b)*(a+b)*c就要把宏定义改为
#define ADD(x) (x)*(x)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ggdmdf
2008-03-11 · TA获得超过1520个赞
知道小有建树答主
回答量:1024
采纳率:0%
帮助的人:1224万
展开全部
d=ADD(a+b)*c=a+b*a+b*c
=4+6*4+6*7
=4+24+42
=70

------------------
宏命令是简单的替换:
d=ADD(a+b)*c=a+b*a+b*c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z24l
2008-03-11 · 超过22用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:69.9万
展开全部
ADD(a+b) = a+b*a+b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式