请帮忙回答下,谢谢!

jiangqiwy 2009-09-12 01:01:48
#include <iostream.h>
#define PLUS(x,y) x+y
void main()
{
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
cout<<"SUM="<<sum;
cout<<endl;
}

这个程序PLUS(x+y,z)等于6,PLUS(y,z)等于5,就为什么sum运行出来等于12呢?请帮忙解答下,谢谢!
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liao05050075 2009-09-12
  • 打赏
  • 举报
回复
#define只是简单地文字替换。
在这里,它把PLUS(x,y)换成x+y;
于是
sum=PLUS(x+y,z)*PLUS(y,z);
就变成了
sum=x+y+z*y+z,所以sum=12

要得到正确的结果,你要把
#define PLUS(x,y) x+y 加个括号,变成
#define PLUS(x,y) ((x)+(y))才对
jzd8000 2009-09-12
  • 打赏
  • 举报
回复
sum=PLUS(x+y,z)*PLUS(y,z);
经过预处理器展开就会变成:
sum=x+y+z*y+z;
所以会是12.
这是个很基础的问题啊!
bitxinhai 2009-09-12
  • 打赏
  • 举报
回复
sum=PLUS(x+y,z)*PLUS(y,z);
当宏展开时,就变成了
x+y+z*y+z,你计算一下这个表达式的
值就知道了!@!!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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