帮忙解决一个简单问题!

jznsmail 2003-10-09 12:31:55
#include<iostream.h>
#define n 3
#define y(x) ((n+1)*x)
int main()
{
cout<<2*(n+y(5+1));
return 0;
}
答案为什么是48而不是54?
...全文
35 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Atry 2003-10-09
  • 打赏
  • 举报
回复
要知道凡是#的语句,并不是真正的语句,并没有进行函数调用

#define y(x) ((n+1)*x)
cout<<2*(n+y(5+1));

这里y(5+1)等同于((n+1)*5+1)

懂了吗?
Atry 2003-10-09
  • 打赏
  • 举报
回复
回答正确才给我5分,真小气
Atry 2003-10-09
  • 打赏
  • 举报
回复

#define y(x) ((n+1)*x)
改成
#define y(x) ((n+1)*(x))
Meigen 2003-10-09
  • 打赏
  • 举报
回复
应该是
指令 cout<<2*(n+y(5+1));
系统执行为:2*(n+((n+2)*5)+1);

如:改为cout<<2*(n+y(5+2)); 答案50
cout<<2*(n+y(5+3)); 答案52
cout<<2*(n+y(6+1)); 答案56!
Meigen 2003-10-09
  • 打赏
  • 举报
回复
原因希望大虾来解释。
关注~~~
Meigen 2003-10-09
  • 打赏
  • 举报
回复
当你把
cout<<2*(n+y(5+1));
改成
cout<<2*(n+y(6));
后,答案是54!

69,369

社区成员

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

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