C では、'if' ステートメントの条件式内で変数を宣言することが長年行われてきました。制限。 C 17 以降、この制限は解除されました。
以前は、「if」条件で宣言された変数のスコープは「if」ステートメントのサブステートメントに限定されていました。宣言を括弧で囲むことは禁止されており、条件ごとに宣言は 1 つだけ許可されていました。この制限は、条件内の変数の初期化が必要な場合には不便でした。
コード スニペットを考えてみましょう:
bool a = false, b = true; if (bool x = a || b) // Cannot declare x within the condition { }
「if」スコープ内で x を false に初期化するには、かっこが必要でした。演算子の優先順位のため。ただし、括弧は許可されていないため、x を「if」の外側で宣言する必要がありました。これにより、宣言がより広い範囲に漏洩しました。
C 17 では、この制約が緩和されました。次のコードが有効になりました:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
「;」の使用に注意してください。宣言を条件から分離します。これにより、複数の宣言と必要に応じて括弧の使用が可能になります。
したがって、以前は準拠していなかったことが、C 17 の導入により可能になりました。
以上がC 17 は「if」条件内で変数を宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。