为了账号安全,请及时绑定邮箱和手机立即绑定

C 感觉逻辑一样的- -。然并卵,有图 ,不服

C 感觉逻辑一样的- -。然并卵,有图 ,不服

C C++
三月源 2016-01-15 00:43:40
怎么运行的结果一个45一个21 - -。。。。。。。 哪个是正确的- -,
查看完整描述

3 回答

已采纳
?
MadMarical

TA贡献79条经验 获得超122个赞

你好,首先理解宏是一个直接替代,相当于是用这块直接替换了调用快。所以,对于程序1:g(2 + 3,4,5) =2 *f(2 + 3, 4,5) = 2 * 2 + 3 * 4 + 5 = 21。对于程序2 : 因为你首先int x = 2 + 3所以在编译器执行程序时,按照流程会先算出来此时x = 5。所以g(x,y,z) = 2 * 5 * 4 + 5 = 45。对于计算机来说,这两段代码都没有错误。对于我们来说,需要细细想清楚。

查看完整回答
反对 回复 2016-01-18
?
zhuceyong244

TA贡献8条经验 获得超1个赞

宏替换不会自动帮你加上括号

查看完整回答
反对 回复 2016-01-20
?
努力提升

TA贡献65条经验 获得超15个赞

上面的计算为:2*2+4*3+5 =21

下面的x直接是5了,所以计算为:2*5*4+5 = 45

查看完整回答
反对 回复 2016-01-15
  • 3 回答
  • 0 关注
  • 1449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信