宏的价值如何变化

How is value of macro getting change

#include <stdio.h>
int main()
{
    int var;
    printf("write the value of var:\n");
    scanf("%d", &var);
#define NUM var

    printf("The value of S is %d\n", NUM);
    var = var + 1; //changing the value of variable 'var'
    printf("New value of S is %d", NUM);
return 0;
}

结果如下...

write the value of var:
10
The value of S is 10
New value of S is 11
[Program finished]

在这个程序中,我想在用户输入变量 'var' 后将其设为常量。所以,我定义了一个带有宏模板 'NUM' 和宏扩展 'var' 的宏。 但是当我在执行时更改 'var' 的值时,'NUM' 的值也会更改。不知道怎么办? 其实我不知道我们可以在宏扩展中使用任何变量吗?

预处理是在实际的 C 代码编译之前完成的。它只是在文本上用标记 var.

替换标记 NUM

所以在预处理之后你的函数是:

int main()
{
    int var;
    printf("write the value of var:\n");
    scanf("%d", &var);

    printf("The value of S is %d\n", var);
    var = var + 1; //changing the value of variable 'var'
    printf("New value of S is %d", var);
return 0;
}

这个main函数正在编译中。如您所见,NUM 已被替换为 var,结果显而易见。