请各位大虾帮我看看这题,然后给我说明一下宏替换的替换规则啊?

H602miss 2010-09-08 03:49:28
#define ADD(x) (x)+(x)
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
a=ADD(a+b);
printf("d=%d",a);
}
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q446512799 2010-09-08
  • 打赏
  • 举报
回复
宏替换,先替换在运算
maoxing63570 2010-09-08
  • 打赏
  • 举报
回复

#define ADD(x) (x)+(x)
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;//相当于(a+b)+(a+b)*c,结果为80
printf("d=%d",d);
a=ADD(a+b);
printf("d=%d",a);
}


#define ADD(x) ((x)+(x))
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;//相当于((a+b)+(a+b))*c,结果为140
printf("d=%d",d);
a=ADD(a+b);
printf("d=%d",a);
}


#define ADD(x) x+x
main()
{
int a=4,b=6,c=7,d=ADD(a+b)*c;//相当于a+b+a+b*c,结果为56
printf("d=%d",d);
a=ADD(a+b);
printf("d=%d",a);
}

仔细比较这三个,就可以知道了
老邓 2010-09-08
  • 打赏
  • 举报
回复
把宏替换理解成最简单的字符串替换,不会做任何的改动,纯替换而已!
pengzhixi 2010-09-08
  • 打赏
  • 举报
回复
#define ADD(x) ((x)+(x))

注意括号,否则展开后不是你想要的结果

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧