可能重複:
In C++ books, array bound must be constant expression, but why the following code works?根據C++的規則是否合法?
看到這個代碼
#include<iostream>
int main
{
using namespace std;
int a=7;
char arr[a];
return 0;
}
在我的書上寫着的是ARRAY_SIZE必須是恆定的,但是代碼塊是不是在它給錯誤...
它不是唯一的案例..還有其他幾個例子。
誰是錯誤的IDE,編譯器或其他東西?
確實使用較新或較舊的書籍會導致此類問題?
我非常肯定,你不能這樣做,除非是const。 – mathematician1975
@KenWhite:不,「a」不是一個常量表達式。編譯器*可以確定該值爲「7」,但不是必需的。語言標準的*常數表達式*的定義被設計爲不要求編譯器執行數據流分析。 –
雖然這是偷偷摸摸的 - 顯然它有效,但實際上是正確的?正確的意義在於有效的C++。 – mathematician1975