宣言されていない変数の初期化: 特殊性を探る
C/C では、変数を使用して宣言と初期化を同時に行うと、奇妙な動作が発生します。初期化式内に新たに導入された変数。
int x = x + 1;
これにより、「これは意図された動作ですか、それともパーサーの異常ですか?
変数の初期化」という疑問が生じます。
構文 int x = x 1;変数 x を宣言しながら初期化します。この初期化プロセスは等号 (=) で発生し、変数を右側で使用できるようになります。
ただし、変数 x に静的保存期間 (関数の外) がない限り、その初期値はは任意であるため、未定義の動作が発生します。
C 標準、
C 03 標準では次のように指定されています。
「名前の宣言のポイントは、完全な宣言子 (...) の直後で、初期化子 (存在する場合) の前。
これは、式 int x = x; 内で、初期化内の 2 番目の x が独自の未定義値を参照していることを意味します。 .
**パーサーの特異性または意図された動作?、
この特異な動作は GCC バージョンに固有のものではありません。これは C/C 標準の実装であり、新しく宣言された独自の値で変数を初期化できます。
ただし、このアプローチを利用する場合は注意が必要です。次の場合、予期しない結果が生じる可能性があります。変数には静的ストレージ期間がありません。
以上が独自の宣言されていない値による変数の初期化は C/C の異常ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。