#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不支持 变长数组 ,在这个标准下,上面代码会报错,必须用编译期常量来指定数组的大小。
C11及以后VLA变成了可选,因此C11有可能不能用VLA(特指MSVC)
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!