首頁 > 後端開發 > C++ > 為什麼我的可變長度數組在 C 中編譯和執行而不顧標準?

為什麼我的可變長度數組在 C 中編譯和執行而不顧標準?

Barbara Streisand
發布: 2024-11-12 13:35:02
原創
454 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板