c ++でwhileループを使用して、開始または終了ではなくループの途中でチェックすることは可能ですか?

StackOverflow https://stackoverflow.com/questions/1807110

質問

whileループに次のようなことをさせたいのですが、これはc ++で可能ですか?その場合、構文はどのようになりますか?


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

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

役に立ちましたか?

解決

できること:

while (1) {
   //some code
   if ( condition) {
       break;
   }
   // some more code
}

他のヒント

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

を使用することもできます
do {
    ...
} while (true);

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

while (true)
{
  ...
  // Insert at favorite position
  if (condition)
    break;
  ...
}

技術的にははい:

 for ( ;CodeBefore, Condition; ) {CodeAfter}

いいえwhileステートメントをループの途中に配置することはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top