C语言问题 大神看到了请帮忙说明一下运算过程,感激不尽! 50
2个回答
更多追问追答
追问
您好,我的疑问是定义了宏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
你计算一下
d = sub(5) * 3的值
答案是5+5*3=20,而不是30
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询