在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?
答案 0 :(得分:4)
您应该将x
括在括号中以强制优先。但是,将整个表达式包装在括号中也很重要。
#define OP(x) ((x)*(x))