可能重复:
C 宏和括号中参数的使用
我发现这个宏观问题非常有趣。
如果以下代码被定义为宏
#define MULT(x, y) x * y
函数调用为int z = MULT(3 + 2, 4 + 2);
. 期望的输出是 3+2=5 和 4+2=6 并且 5*6 是 30。
但是返回的输出是 13。它把它当作 3+2*4+2。因此,根据运算符的优先级,它首先评估 2*4。
这里的解决方法是什么?在像这些较小的功能的情况下,哪一个是有效的?定义函数还是使用宏?
可能重复:
C 宏和括号中参数的使用
我发现这个宏观问题非常有趣。
如果以下代码被定义为宏
#define MULT(x, y) x * y
函数调用为int z = MULT(3 + 2, 4 + 2);
. 期望的输出是 3+2=5 和 4+2=6 并且 5*6 是 30。
但是返回的输出是 13。它把它当作 3+2*4+2。因此,根据运算符的优先级,它首先评估 2*4。
这里的解决方法是什么?在像这些较小的功能的情况下,哪一个是有效的?定义函数还是使用宏?