当输入是复合时,在 C 中定义不起作用

Define in C does not work when input is composite

在 C 中使用 define 时出现问题。当我调用 OP(9) 时效果很好,但是当我调用 OP(7+2) 时我得到 23。为什么?

 #include<stdio.h>
 #include<stdlib.h>

 #define OP(x) x*x;

 int main() {
 int x,y;

 x = 2;
 y = OP(7+2);
 printf("%d", y);

 return 0;

 }

为什么打印 23 而不是 81?

您应该将 x 括在括号中以强制优先。但是,将整个表达式括在括号中也很重要。

#define OP(x) ((x)*(x))