#include<stdio.h>
int main()
{
int i,a=4,b[a];
for (i=0;i<4;i++)
{
scanf("%d",&b[i]);
}
for (i=0;i<4;i++)
{
printf("%d",b[i]);
}
return 0;
}
C语言这么多年来更新了几次,制定了多个标准,
C语言在C99标准之后增加了 变长数组 ,允许使用变量指定数组大小,如果编译没有报错,那可能是编译器设置了支持C99标准,GCC设置的编译参数如-std=c99,-std=c11等。
变长数组 在C99之前的标准中是不支持的,即C89/C90标准,这也是大多数C语言教材所使用的标准。C89不支持 变长数组 ,在这个标准下,上面代码会报错,必须用编译期常量来指定数组的大小。
int i,a=4,b[a];
等价于
int i,a=4;
int b[a];
因为你先给a赋值了,相当于是一个数字了,你把a放在数组后面定义就会报错了