新しく宣言された変数を初期化で使用できるのはどのような場合ですか?
次のように、それ自体を使用して変数を初期化する珍しい構文int x = x 1; は、多くのプログラマーを困惑させてきました。直感的には間違っているように思えるかもしれませんが、この動作の背後にある基礎的な仕組みを理解すると、その目的と制限が明らかになります。
C/C では、変数は代入演算子 (= 記号) で存在します。これは、式 int x = x 1; で、変数 x が宣言され、その値が初期化される前にスコープ内に入るということを意味します。これにより、代入の右側で x を使用できるようになります。
ただし、この時点での x の値は不定であることを覚えておくことが重要です。この動作は、静的ストレージ期間 (関数の外部など) で変数を初期化する場合を除き、未定義です。
C 03 によれば、名前の宣言のポイントは、完全な宣言子の直後であり、宣言子の直前です。その初期化子。これは、以下の例の 2 番目の x が不定の値で初期化されていることを意味します:
<code class="c++">int x = 12; { int x = x; }</code>
この微妙な動作を理解することは、正しく最適化されたコードを作成するために不可欠です。初期化で新しく宣言された変数を使用することは特定のシナリオでは有効である可能性がありますが、不定値の影響が完全に理解されていない限り、この方法は避けることをお勧めします。
以上がC/C でそれ自体を使用して変数を初期化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。