当输入是复合时,在 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))
在 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))