c ++でwhileループを使用して、開始または終了ではなくループの途中でチェックすることは可能ですか?
-
05-07-2019 - |
質問
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ステートメントをループの途中に配置することはできません。
所属していません StackOverflow