是否可以在 C 中定义 const 值:
#define N;
而不是要求用户输入是使用scanf()?
如果是这样,如何?
#define
ed 值不是正常的常量。它们由预处理器计算/转换,因此您在编译时会丢失它们,并且肯定无法在运行时更改它们。
请注意,此类 a 的语法#define
是#define N 5
而不是#define N;
预处理器宏定义的扩展是在预处理阶段运行时设置的,甚至在大量编译之前。
因此,例如,如果您这样做#define N 5
,那么N
将永远是5
,而不是其他任何事情。
如果你这样做#define N my_global_integer
,那么N
将永远是my_global_integer
,永远不会有别的。
所以我想你可以这样做:
#include <stdio.h>
#define N my_global_integer
int my_global_integer;
int main() {
scanf("%d", &N);
printf("%d\n", N);
}
预处理器宏N
是常量,但它最终扩展为的变量不是。我通常不会建议它,但如果这个问题是一个谜,那么这可能就是答案。
不。
在实际编译器甚至看到源代码之前,您定义的内容define
会被预处理器以文本方式替换。
此外,常量不应该改变,这对于你的想法来说应该是非常明显的危险信号。
不,因为s 在编译时使用预处理器#define
插入到代码中。它们不能在运行时更改。