while ループで次のようなことをしたいのですが、C++ で可能でしょうか? もしそうなら、構文はどうなりますか?
do {
//some code
while( expression to be evaluated );
// some more code
}
while ステートメントが式が true ではなくなったと判断したらすぐにループを終了したいと思います (つまり、式が false の場合、//それ以上のコードは実行されません)。
while ループで次のようなことをしたいのですが、C++ で可能でしょうか? もしそうなら、構文はどうなりますか?
do {
//some code
while( expression to be evaluated );
// some more code
}
while ステートメントが式が true ではなくなったと判断したらすぐにループを終了したいと思います (つまり、式が false の場合、//それ以上のコードは実行されません)。
できるよ:
while (1) {
//some code
if ( condition) {
break;
}
// some more code
}
ちょっとした背景と分析: あなたが求めているのは、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);
さて、条件をループの途中に移動する必要があると思います(?):
while (true)
{
...
// Insert at favorite position
if (condition)
break;
...
}
技術的には、はい:
for ( ;CodeBefore, Condition; ) {CodeAfter}
答えはノーです。 while ステートメントが評価するはずの条件が true の場合、ループの上部 (または下部) で実際に評価されるまで、ループを自動的に終了させることはできません。while 文をループの途中に置くことはできません。