5

while ループで次のようなことをしたいのですが、C++ で可能でしょうか? もしそうなら、構文はどうなりますか?


do {
    //some code
    while( expression to be evaluated );
    // some more code
}

while ステートメントが式が true ではなくなったと判断したらすぐにループを終了したいと思います (つまり、式が false の場合、//それ以上のコードは実行されません)。

4

5 に答える 5

12

できるよ:

while (1) {
   //some code
   if ( condition) {
       break;
   }
   // some more code
}
于 2009-11-27T06:36:37.417 に答える
6

ちょっとした背景と分析: あなたが求めているのは、Simula で有名な Ole-Johan Dahl にちなんで名付けられた " Dahl loop " と呼ばれるものです。Sean E.が述べているように、C++にはそれらがありませんが(imaの答えは別として)、他のいくつかの言語にはあります(特にAda)。これは、「do-while」および「while-do」ループの代わりになるため、便利な構造になります。より一般的なケースでは、任意の数のテストが可能です。C++ には Dahl ループ用の特別な構文はありませんが、Sean McCauriff と AraK の回答はそれらと完全に同等です。「while (true)」ループは、コンパイラによって単純なジャンプに変換される必要があるため、コンパイルされたバージョンは、架空の Dahl ループのコンパイルされたバージョンと完全に区別できません。より読みやすい場合は、

do {
    ...
} while (true);
于 2009-11-27T07:25:42.173 に答える
3

さて、条件をループの途中に移動する必要があると思います(?):

while (true)
{
  ...
  // Insert at favorite position
  if (condition)
    break;
  ...
}
于 2009-11-27T06:36:52.817 に答える
3

技術的には、はい:

 for ( ;CodeBefore, Condition; ) {CodeAfter}
于 2009-11-27T06:48:55.663 に答える
1

答えはノーです。 while ステートメントが評価するはずの条件が true の場合、ループの上部 (または下部) で実際に評価されるまで、ループを自動的に終了させることはできません。while 文をループの途中に置くことはできません。

于 2009-11-27T06:46:07.590 に答える