私はC++で空のサイズの配列が違法、知っているが、私のコードでは、空のサイズの配列コンパイラが許可され、与え配列の宣言では、我々はこのintはなぜ[+] C++で許可されていますか?
int a[0];
のような、それのサイズを指定することはできませんことを見つけます出力。
私のコードはここにある:
#include <iostream>
using namespace std;
int main()
{
int a[0];
a[0] = 10;
a[1] = 20;
cout<<a[0]<<endl;
cout<<a[1]<<endl;
return 0;
}
出力:
10
20
オンラインコンパイラのリンク:http://code.geeksforgeeks.org/TteOmO
だから、私の質問は、なぜ許さint a[0]
されているGCCコンパイラ?
'int a [0];を実行しています。 a [0] = 10; a [1] = 20;はFireWorks(UB)につながります。 – sameerkn
OPはそれが間違っていることを知っている、なぜコンパイラはエラーを発生させないのですか? ) – slawekwin
'エラー:ISO C++はゼロサイズの配列を禁止しています '' [-Wpedantic] int a [0]; ' – Praveen