「cpp/language/while」の版間の差分
提供: cppreference.com
細 (Use {{lc}}. Update links. Various fixes.) |
|||
1行: | 1行: | ||
− | + | {{title|while }} | |
− | {{title|while | + | {{cpp/language/navbar}} |
− | {{cpp/language/navbar}} | + | {{||}} {{|}} |
− | {{ | + | |
− | + | ||
− | {{ | + | |
===構文=== | ===構文=== | ||
{{sdsc begin}} | {{sdsc begin}} | ||
− | {{sdsc | {{ttb|while (}} {{spar| | + | {{sdsc | {{ttb|while (}} {{spar|}} {{ttb|)}} {{spar|}} }} |
{{sdsc end}} | {{sdsc end}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===説明=== | ===説明=== | ||
− | + | {{spar|}} | |
+ | {{| | ||
+ | |||
+ | |||
+ | |||
+ | }} | ||
+ | |||
+ | {{| | ||
+ | { | ||
+ | |||
+ | } | ||
+ | }} | ||
− | {{ | + | {{|}} {{|{{}} }} |
− | {{ | + | {{| |
+ | |||
+ | { | ||
+ | |||
+ | { | ||
+ | statement | ||
+ | |||
+ | } | ||
+ | } | ||
+ | }} | ||
+ | |||
+ | {{rlp|| | ||
+ | |||
+ | {{||continue }} | ||
+ | |||
+ | |||
+ | }} | ||
===キーワード=== | ===キーワード=== | ||
− | {{ltt|cpp/ | + | {{ltt|cpp//while}} |
===例=== | ===例=== | ||
26行: | 56行: | ||
#include <iostream> | #include <iostream> | ||
− | int main() | + | int main() { |
− | { | + | |
int i = 0; | int i = 0; | ||
− | while (i < 10) i++; | + | while (i < 10) |
− | + | i++; | |
std::cout << i << '\n'; | std::cout << i << '\n'; | ||
− | + | ||
+ | |||
int j = 2; | int j = 2; | ||
while (j < 9) { | while (j < 9) { | ||
− | std::cout << j << | + | std::cout << j << ; |
j += 2; | j += 2; | ||
} | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
} | } | ||
| output= | | output= | ||
10 | 10 | ||
− | 2 4 6 8 | + | 2 4 6 8 |
+ | |||
}} | }} | ||
− | + | ||
− | + | ||
− | + | /language/while | |
− | + | ||
− | + | ||
− | + | enesfritptruzh | |
− | + | ||
− | + |
2018年9月26日 (水) 04:48時点における最新版
condition の値が false になるまで、 statement を繰り返し実行します。 テストは繰り返しの各回の前に行われます。
目次 |
[編集] 構文
attr(オプション) while ( condition ) statement
|
|||||||||
attr(C++11) | - | 任意の個数の属性。 |
condition | - | bool に文脈的に変換可能な任意の式、または波括弧または等号の初期化子付きの単一の変数の宣言。 この式は繰り返しの各回の前に評価され、 false になると、ループを終了します。 宣言の場合は、初期化子が繰り返しの各回の前に評価され、その宣言された変数の値が false に変換される場合、ループを終了します。 |
statement | - | 任意の文。 一般的には複文であり、ループの本体になります。 |
[編集] 説明
statement が単一の文 (複文でない) の場合は、宣言された変数のスコープはそれが複文であったかのように while ループに制限されます。 別の言い方をすると、
while (--x >= 0) int i; // i はスコープ外になります。
これは以下と同じです。
while (--x >= 0) { int i; } // i はスコープ外になります。
condition が T t = x のような宣言である場合、その宣言された変数はループ本体のスコープに制限され、繰り返しのたびに破棄され、再作成されます。 別の言い方をすると、そのような while ループは以下と同等です。
label: { // condition のスコープの始まり T t = x; if (t) { statement goto label; // t のデストラクタを呼びます。 } }
ループの実行をどこかの点で終了する必要がある場合は、 break 文を終了文として使用することができます。
ループの実行をループ本体の終わりから継続する必要がある場合は、 continue 文をショートカットとして使用することができます。
[編集] ノート
C++ の前方進行保証の一部として、観察可能な動作を持たない (入出力関数を呼んだり、 volatile オブジェクトにアクセスしたり、アトミック操作や同期操作行ったりしない) ループが終了しない場合、動作は未定義です。 コンパイラはそのようなループを削除することが許されています。
[編集] キーワード
[編集] 例
Run this code
#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
[編集] 関連項目
while の C言語リファレンス
|