问题:
尽管存在变长数组 (VLA) 的概念不是 C 标准的一部分,为什么下面的代码可以编译并成功执行:
#include <iostream> using namespace std; int main() { int n; cin >> n; int a[n]; for (int i=0; i<n; i++) { a[i] = i; } for (int i=0; i<n; i++) { cout << a[i] << endl; } }
答案:
C 标准并没有强制编译器支持 VLA。但是,编译器供应商可能会包含 VLA 作为扩展。例如,GCC 版本 4.7 及更高版本确实支持 VLA。
VLA 最初建议包含在 C 14 中,但未被接受。它们也没有包含在后续的 C 17 修订版中。
以上是为什么我的可变长度数组在 C 中编译和执行而不顾标准?的详细内容。更多信息请关注PHP中文网其他相关文章!