問題:
儘管存在變長數組(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中文網其他相關文章!