2

重複の可能性:
この自己初期化は有効ですか?

これは明確に定義された C/C++ プログラムですか?

int foo = foo;

int main()
{

}

ゼロで初期化されますかfoo、それとも未定義の動作ですか?

4

4 に答える 4

11

これは不正な形式のCプログラムです。Cでは、静的ストレージ期間を持つオブジェクトの初期化子は定数式である必要があります。foo右側のは定数式ではありません。

C ++では、静的ストレージ期間(他の初期化の前に行われる)でオブジェクトの初期化がゼロであるため、整形式で動作が定義されています。

于 2012-08-28T17:09:44.293 に答える
1

静的/グローバル変数は0で初期化されます。したがって、次のようになります。

int ThisIsZero;

int main(void)
{
    static int AndSoIsThis;
    int ButThisIsNotInitialized;
    ...
};
于 2012-08-28T17:08:25.170 に答える
1

C でコンパイルすることさえできません。コンパイル時の定数を使用する以外に、グローバル変数を初期化することはできません。

于 2012-08-28T17:07:13.067 に答える
0

それはコンパイルされません-そして、質問のポイントは何ですか?

于 2012-08-28T17:11:29.203 に答える