首页  >  文章  >  后端开发  >  为什么我的可变长度数组在 C 中编译和执行而不顾标准?

为什么我的可变长度数组在 C 中编译和执行而不顾标准?

Barbara Streisand
Barbara Streisand原创
2024-11-12 13:35:02440浏览

Why Do My Variable Length Arrays Compile and Execute in C   Despite the Standard?

C 中支持变长数组吗?

问题:

尽管存在变长数组 (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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn