猿问

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


5697cffb00016cef04230301.jpg

怎么运行的结果一个45一个21 - -。。。。。。。 哪个是正确的- -,

三月源
浏览 1450回答 3
3回答

MadMarical

你好,首先理解宏是一个直接替代,相当于是用这块直接替换了调用快。所以,对于程序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。对于计算机来说,这两段代码都没有错误。对于我们来说,需要细细想清楚。

zhuceyong244

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

努力提升

上面的计算为:2*2+4*3+5 =21下面的x直接是5了,所以计算为:2*5*4+5 = 45
随时随地看视频慕课网APP
我要回答