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

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

Barbara Streisand
发布: 2024-11-12 13:35:02
原创
473 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板