以下代码有什么问题?

pho*_*nix 4 c

这段代码似乎在编译时会产生一些麻烦.任何解释?

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)

Raf*_*ler 5

在C中,您不能使用非常量表达式初始化全局变量.将maxlen初始化为i失败,因为i它不是常量表达式.它是C标准的一部分.

为什么不#define恒定?

#define MAXLEN 20
Run Code Online (Sandbox Code Playgroud)


Pau*_*sik 5

在初始化该范围内的变量时,只能使用编译时常量.尝试:

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)