名前空間
変種
操作

「cpp/language/while」の版間の差分

提供: cppreference.com
< cpp‎ | language
(Use {{lc}}. Update links. Various fixes.)
 
1行: 1行:
{{tr_note}}
+
{{title|while }}
{{title|while loop}}
+
{{cpp/language/navbar}}
{{cpp/language/navbar}}
+
{{||}} {{|}}
{{tr|ループを実行.|Executes a loop.}}
+
 
+
{{tr|コー​​ドには、いくつかの条件が存在している間、何度も実行する必要がどこに使用され.|Used where code needs to be executed several times while some condition is present.}}
+
  
 
===構文===
 
===構文===
 
{{sdsc begin}}
 
{{sdsc begin}}
{{sdsc | {{ttb|while (}} {{spar|cond_expression}} {{ttb|)}} {{spar|loop_statement}} }}
+
{{sdsc | {{ttb|while (}} {{spar|}} {{ttb|)}} {{spar|}} }}
 
{{sdsc end}}
 
{{sdsc end}}
 +
 +
 +
 +
 +
 +
  
 
===説明===
 
===説明===
{{tr|{{spar|cond_expression}}は、その結果{{c|bool}}に変換可能な表現でなければならない。それは{{spar|loop_statement}}が{{spar|cond_expression}}と評価された場合にのみ実行され{{c|true}}、それぞれの実行前に評価されます.|{{spar|cond_expression}} shall be an expression, whose result is convertible to {{c|bool}}. It is evaluated before each execution of {{spar|loop_statement}}, which is only executed if the {{spar|cond_expression}} evaluates to {{c|true}}.}}
+
{{spar|}}
 +
{{|
 +
 +
 +
 +
}}
 +
 +
{{|
 +
{
 +
 +
}
 +
}}
  
{{tr|ループの実行には、いくつかの時点で終了させる必要がある場合は、{{rlp |break|{{tr| ステートメントを破る| break statement}}}}は文の終端として使用することができます. |If the execution of the loop needs to be terminated at some point, {{rlp |break|{{tr| ステートメントを破る| break statement}}}} can be used as terminating statement. }}
+
{{|}} {{|{{}} }}
  
{{tr|ループの実行は、ループ本体の最後に続いていますが必要な場合は、{{rlp|continue |{{tr| ステートメントを続行します| continue statement}}}}はショートカットとして使用することができます.|If the execution of the loop needs to be continued at the end of the loop body, {{rlp|continue |{{tr| ステートメントを続行します| continue statement}}}} can be used as shortcut.}}
+
{{|
 +
 +
{
 +
 +
{
 +
statement
 +
 +
}
 +
}
 +
}}
 +
 
 +
{{rlp||
 +
 
 +
{{||continue }}
 +
 
 +
 +
}}
  
 
===キーワード===
 
===キーワード===
{{ltt|cpp/keywords/while}}
+
{{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  
 +
 
}}
 
}}
  
[[de:cpp/language/while]]
+
[[en:cpp/language/while]]
+
[[es:cpp/language/while]]
+
/language/while
[[fr:cpp/language/while]]
+
[[it:cpp/language/while]]
+
 
[[pt:cpp/language/while]]
+
enesfritptruzh
[[ru:cpp/language/while]]
+
[[zh:cpp/language/while]]
+

2018年9月26日 (水) 04:48時点における最新版

 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
while
do-while
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
ラベル
label : statement
式文
expression ;
複文
{ statement... }
選択文
if
switch
繰り返し文
while
do-while
for
範囲 for(C++11)
ジャンプ文
break
continue
return
goto
宣言文
declaration ;
try ブロック
try compound-statement handler-sequence
トランザクショナルメモリ
synchronized, atomic_commit など(TM TS)
 

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 はスコープ外になります。

conditionT t = x のような宣言である場合、その宣言された変数はループ本体のスコープに制限され、繰り返しのたびに破棄され、再作成されます。 別の言い方をすると、そのような while ループは以下と同等です。

label:
{ // condition のスコープの始まり
    T t = x;
    if (t) {
        statement
        goto label; // t のデストラクタを呼びます。
    }
}

ループの実行をどこかの点で終了する必要がある場合は、 break 文を終了文として使用することができます。

ループの実行をループ本体の終わりから継続する必要がある場合は、 continue 文をショートカットとして使用することができます。

[編集] ノート

C++ の前方進行保証の一部として、観察可能な動作を持たない (入出力関数を呼んだり、 volatile オブジェクトにアクセスしたり、アトミック操作や同期操作行ったりしない) ループが終了しない場合、動作は未定義です。 コンパイラはそのようなループを削除することが許されています。

[編集] キーワード

while

[編集]

#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

[編集] 関連項目