我正面临着理解#define如何工作的问题.
#include<stdio.h>
#define x 6+3
int main(){
int i;
i=x; //9
printf("%d\n",i);
i=x*x; //27
printf("%d\n",i);
i=x*x*x; //45
printf("%d\n",i);
i=x*x*x*x; //63
printf("%d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用#define x 6+3输出是9 27 45 63
如果我使用#define x (6+3)的输出是9 81 729 6561
#define只需将字符标记(在您的情况下x)替换为您定义的字符标记.因此,在预处理器完成其工作后,您的示例将如下所示:
#include<stdio.h>
#define x 6+3
int main(){
int i;
i=6+3; //9
printf("%d\n",i);
i=6+3*6+3; //27
printf("%d\n",i);
i=6+3*6+3*6+3; //45
printf("%d\n",i);
i=6+3*6+3*6+3*6+3; //63
printf("%d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果你仔细观察它,你会明白为什么例如第二个例子是27而不是81(*之前的+).
另一方面,如果你写(6 + 3)它将是9*9,这就是你所期望的.