while
loop
条件付きで文を繰り返し実行します。
目次 |
構文
attr
(オプション)
while (
condition
)
statement
|
|||||||||
| attr | - | (since C++11) 任意の数の attributes |
| condition | - | 条件式 condition |
| statement | - | 文 statement (通常は複文) |
条件
condition は、 expression または simple declaration のいずれかです。
|
(C++26以降) |
- 構文的に式として解決できる場合は、式として扱われます。それ以外の場合は、構造化束縛宣言ではない宣言として扱われます (since C++26) (C++26以降) 。
制御が条件式に到達すると、条件式は値を生成し、その値を使用して statement が実行されるかどうかが決定されます。
式
condition が式である場合、その評価結果は式が文脈的に bool に変換された値となります。この変換が不適格な場合、プログラムは不適格となります。
宣言
condition が単純な宣言である場合、その結果の値は決定変数(下記参照)の値を文脈的に bool に変換したものである。その変換が不適格な場合、プログラムは不適格となる。
非構造化バインディング宣言
この宣言には以下の制限があります:
- 構文的には以下の形式に従います:
|
(C++11まで) |
|
(C++11以降) |
- 宣言子は 関数 または 配列 を指定できません。
- 型指定子シーケンス (C++11まで) 宣言指定子シーケンス は型指定子と constexpr のみを含むことができ、 (C++11以降) クラス または 列挙型 を定義できません。
宣言の決定変数は、宣言された変数です。
Structured binding 宣言この宣言には以下の制限があります:
この宣言の決定変数は、宣言によって導入される発明された変数 e です 。 |
(C++26以降) |
説明
A while 文は以下と等価です
/* ラベル */
:
|
|||||||||
condition が宣言である場合、それが宣言する変数はループの各反復ごとに破棄され、再作成されます。
ループを statement 内で終了させる必要がある場合、 break statement を終了文として使用できます。
現在の反復処理を statement 内で終了させる必要がある場合、 continue statement をショートカットとして使用できます。
注記
statement が複文であるかどうかに関わらず、常に block scope を導入します。その中で宣言された変数はループ本体でのみ可視です。言い換えると、
while (--x >= 0) int i; // i はスコープ外に出る
は以下と同じです
while (--x >= 0) { int i; } // i はスコープから外れる
C++の 前方進行保証 の一部として、 自明な無限ループではない 自明な無限ループ (C++26以降) ループが 観測可能な動作 を持たずに終了しない場合、その動作は 未定義 です。コンパイラはそのようなループを削除することが許可されています。
キーワード
例
#include <iostream> int main() { // 単一文のwhileループ int i = 0; while (i < 10) i++; std::cout << i << '\n'; // 複合文のwhileループ int j = 2; while (j < 9) { std::cout << j << ' '; j += 2; } std::cout << '\n'; // 宣言条件付きwhileループ char cstr[] = "Hello"; int k = 0; while (char c = cstr[k++]) std::cout << c; std::cout << '\n'; }
出力:
10 2 4 6 8 Hello
関連項目
|
C documentation
for
while
|