宏的价值如何变化
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
,结果显而易见。
#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
,结果显而易见。