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

时间:2017-02-09 17:36:59

标签: c definition

在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?

1 个答案:

答案 0 :(得分:4)

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

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