#define如何在编程中使用运算符定义有值?

H. *_*VON 0 c c++

我正面临着理解#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

Raf*_*wui 5

#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,这就是你所期望的.

  • "*替换变量*"有点误导,因为预处理器确实***不知道*关于"变量".后一个短语更好地读取"替换字符标记". (3认同)