答案为-20
(a+b)-(a+b)*5=-20.
不懂可以追问
您好,我的疑问是定义了宏SUB(a) (a)-(a), 而d=SUB(a+b)*c,然后直接带入宏,不应该是((a+b)*c)-((a+b)*c),也就是两边的a+b都要乘以c嘛,可是您的解答前面一个a+b不带c,后面一个却带有,就是这里不太明白。麻烦再解疑。谢谢
追答是这样的,sub(a+b)是一个整体,但【不是先把这个值算完再乘c】,宏定义就是【直接替换】【再整体计算】的过程,SUB(a+b)等于(a+b)-(a+b)对吧,那就直接把SUB(a+b)替换成(a+b)-(a+b),不管有没有乘c什么的,就是直接替换。所以最终表达式结果就是(a+b)-(a+b)*c。再给你举个别的例子,
#define sub(x) x+x你计算一下
答案是5+5*3=20,而不是30
哦哦,也就是说宏定义的带参数,只替换括号里面的参数,括号外面的值可以暂时忽略,等替换全部结束后再把以下的数值带进去计算……明白了,非常感谢。
追答是的就是这样。不懂还可以继续追问或者私信我也可以
追问嗯嗯,好的好的。非常感谢。可以加您好友嘛,希望可以日后向您请教
追答QQ号私信给你了,不知道为啥追答发不出去了
您好,我给您私信了
追答没看到私信。。。
本回答被网友采纳