重複の可能性:
この自己初期化は有効ですか?
これは明確に定義された C/C++ プログラムですか?
int foo = foo;
int main()
{
}
ゼロで初期化されますかfoo
、それとも未定義の動作ですか?
重複の可能性:
この自己初期化は有効ですか?
これは明確に定義された C/C++ プログラムですか?
int foo = foo;
int main()
{
}
ゼロで初期化されますかfoo
、それとも未定義の動作ですか?
これは不正な形式のCプログラムです。Cでは、静的ストレージ期間を持つオブジェクトの初期化子は定数式である必要があります。foo
右側のは定数式ではありません。
C ++では、静的ストレージ期間(他の初期化の前に行われる)でオブジェクトの初期化がゼロであるため、整形式で動作が定義されています。
静的/グローバル変数は0で初期化されます。したがって、次のようになります。
int ThisIsZero;
int main(void)
{
static int AndSoIsThis;
int ButThisIsNotInitialized;
...
};
C でコンパイルすることさえできません。コンパイル時の定数を使用する以外に、グローバル変数を初期化することはできません。
それはコンパイルされません-そして、質問のポイントは何ですか?