这段代码似乎在编译时会产生一些麻烦.任何解释?
int i =20;
int maxlen = i;
int main()
{
int j = i;
printf("i=%d , j=%d\n", i , j);
}
Run Code Online (Sandbox Code Playgroud)
在C中,您不能使用非常量表达式初始化全局变量.将maxlen初始化为i失败,因为i它不是常量表达式.它是C标准的一部分.
为什么不#define恒定?
#define MAXLEN 20
Run Code Online (Sandbox Code Playgroud)
在初始化该范围内的变量时,只能使用编译时常量.尝试:
int i = 20;
int maxlen;
int main()
{
maxlen = i; // assign within the scope of a function
int j = i;
printf("i=%d , j=%d\n", i , j);
}
Run Code Online (Sandbox Code Playgroud)