C の if 式での変数宣言
C では、if 式の条件内の変数宣言の構文が制限されることがよくあります。このような制限が標準ベースなのかコンパイラ固有なのかという疑問が生じます。
2003 C 標準 (6.4.3) では、if 条件内での変数宣言が許可されており、スコープは制御されたサブステートメントまで拡張されます。ただし、宣言を囲む括弧や条件内の複数の宣言を明示的に禁止するわけではありません。
以前のバージョンの C は、括弧や複数の宣言に関して一貫性のない動作をしていました。提供されているコード サンプルでは、
この制限は、条件内で宣言が 1 つだけ必要なシナリオでは不便です。
C 17 ソリューション
C 17 はこれに対する解決策を導入しました問題:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
この構文はセミコロン (;) を利用して宣言と条件を区切ります。単一の条件内で複数の変数を宣言できるようになり、以前の不便さがなくなりました。
以上がC の「if」式は、標準やコンパイラ間で一貫して変数宣言を処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。