C语言数组[ ]里可以放变量?

定义数组的时候[ ]里必须是一个常量表达式,例如a[20]是合法的,像下面这样的代码是不合法的
#include<stdio.h>
int main()
{
int n=10,i;
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
return 0;
}
但是,这段代码在我电脑上没报错?

在C99标准之后的数组中[ ]的值是支持变量的。
你的编译器执行的应该是C99或者C99之后的标准。
但是一般来说C语言数组[ ]里不可以放变量,因为他们是使用C99之前的标准

因为这里你给n赋值了,就相当于是一个确定的数了

可以理解为这并不是变量,未初始化的数组并不代表是变量

应该是编译器优化了,这里编译的时候就取的是10的长度

你用的什么编译器?