Ist es möglich, eine while-Schleife in C ++ zu haben, die den Scheck in der Mitte der Schleife statt am Anfang oder Ende macht?
-
05-07-2019 - |
Frage
Ich mag eine while-Schleife haben, so etwas wie die folgenden zu tun, aber das ist möglich in C ++? Wenn ja, wie funktioniert die Syntax gehen?
do {
//some code
while( expression to be evaluated );
// some more code
}
Ich möchte die Schleife so schnell verlassen werden, wie die while-Anweisung den Ausdruck entscheidet ist nicht mehr wahr (das heißt, wenn Ausdruck falsch ist, // einige mehr Code nicht ausgeführt wird)
Lösung
Sie können tun:
while (1) {
//some code
if ( condition) {
break;
}
// some more code
}
Andere Tipps
Ein wenig Hintergrund und Analyse: was Sie fragen für mich ein „ Dahl Schleife “, benannt nach Ole-Johan Dahl von Simula Ruhm. Als Sean E. sagt, ist C ++ nicht haben sie (ima Antwort beiseite), obwohl einige andere Sprachen zu tun (vor allem, Ada). Es kann an die Stelle von „do-while“ nehmen und „while-do“ Loops, die es ein nützliches Konstrukt macht. Der allgemeinere Fall ermöglicht eine beliebige Anzahl von Tests. Während C ++ keine spezielle Syntax für Dahl Schleifen, Sean McCauliff und Antworten des Arak sind ihnen völlig gleichwertig. Die „while (true)“ Schleife sollte in einen einfachen Sprung vom Compiler gedreht werden, so dass die kompilierte Version ist völlig ununterscheidbar von einer kompilierten Version einer hypothetischen Dahl Schleife. Wenn Sie es besser lesbar zu finden, können Sie auch ein verwenden
do {
...
} while (true);
Nun, ich denke, man sollte die Bedingung für die Mitte der Schleife bewegen (?):
while (true)
{
...
// Insert at favorite position
if (condition)
break;
...
}
Technisch ja:
for ( ;CodeBefore, Condition; ) {CodeAfter}
Die Antwort ist nein, Sie nicht Ihre Schleife automatisch beendet haben können, wenn die Bedingung, dass die while-Anweisung soll beurteilen ist wahr, bis sie es tatsächlich an der Spitze bewertet (oder unten) der Schleife. Die while-Anweisung kann nicht in der Mitte der Schleife gesetzt werden.