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

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

Barbara Streisand
Barbara Streisand原創
2024-11-12 13:35:02473瀏覽

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