C编程宏​​乘法

Kat*_*tti 2 c

可能重复:
C宏并在括号中使用参数

我发现这个宏观问题非常有趣.

如果以下代码定义为宏

#define MULT(x, y) x * y
Run Code Online (Sandbox Code Playgroud)

并且函数调用为int z = MULT(3 + 2, 4 + 2);.期望输出为3 + 2 = 5且4 + 2 = 6且5*6为30.

但返回的输出是13.它需要3 + 2*4 + 2.因此,根据运算符的优先级,它首先计算2*4.

这是什么修复?如果像这样的小功能哪一个有效?定义功能还是使用宏?

小智 10

尝试类似的东西:

#define MULT(x, y) ((x)*(y))
Run Code Online (Sandbox Code Playgroud)