【发布时间】:2021-08-15 15:30:36
【问题描述】:
#define MUX(a,b) a*b
MUX(10-5,10+5) = 10+5*10-5 = 10+50-5 = 55
我认为MUX(10-5,10+5) = (10-5)*(10+5) = 75,但这是错误的。
为什么?谁能解释一下?
【问题讨论】:
-
这就是为什么你应该在宏参数周围加上括号
-
将
#define MUX(a,b) a*b替换为#define MUX(a,b) ((a)*(b)),您将获得所需的行为。 -
如果您研究预处理器的输出,您就会明白原因。查看副本的链接。
标签: c macros c-preprocessor