麻烦高手给解释一下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 的分析啊 是怎么运算的 展开
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d); }
这个程序是怎么运行的啊? 麻烦高手把过程分析一下 谢谢了
关键是d=ADD(a+b)*c 的分析啊 是怎么运算的 展开
展开全部
#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)
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)
展开全部
那是宏原样替换
容易误倒人的是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
容易误倒人的是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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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)
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
=4+6*4+6*7
=4+24+42
=70
------------------
宏命令是简单的替换:
d=ADD(a+b)*c=a+b*a+b*c
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ADD(a+b) = a+b*a+b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询