[请教]初学者提问。

51dianying 2003-09-01 02:49:53

#define N 3

#define Y(n)((N+1)*n)

则执行语句:z=2 *(N+Y(5+1));后,z的值为

答案是 48,我怎么算是54啊?
...全文
49 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
51dianying 2003-09-01
  • 打赏
  • 举报
回复
啊,原来是这样!谢谢大家!:)
jyfcsdn 2003-09-01
  • 打赏
  • 举报
回复
宏就是替换,所以n的地方替换为5+1,而不是(5 + 1)
syuui 2003-09-01
  • 打赏
  • 举报
回复
如果想得54,这样定义宏:
#define Y(n) ((N+1)*(n))
syuui 2003-09-01
  • 打赏
  • 举报
回复
n是换成了5+1。
Y(n)就是把Y里所有的n换成5+1。Y(n)的括号是宏定义的。不是宏的值。别想错了。呵呵
syuui 2003-09-01
  • 打赏
  • 举报
回复
宏代换嘛。
它只是简单地把n换成5+1了。它不会去管应不应该有括号。
ppby2002 2003-09-01
  • 打赏
  • 举报
回复
这正是宏容易出错的地方啊
51dianying 2003-09-01
  • 打赏
  • 举报
回复
为啥不是:

z= 2 * (N + (N+1)*(5+1))=54呢 Y(5+1)不是等于((N+1)*(5+1))吗?麻烦请解释一下,多谢!
syuui 2003-09-01
  • 打赏
  • 举报
回复
z = 2*(N+(N+1)*5+1 ) = 2*( 3 + (3+1)*5+1 ) = 48

69,382

社区成员

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

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