Pause in der do while-Schleife
Was passiert, wenn man in verschachtelten Schleifen?
angenommen, Sie den folgenden code:
for(int x = 0; x < 10; x++)
{
do {
if(x == 4)
break;
x++;
} while(x != 1);
}
Die Schleife wird beendet, auf die Begegnung mit der break-Anweisung, die for-Schleife oder die do-while-Schleife ?
break
wird nur verlassen der inneren Schleife- es verlassen die do/while, wenn Sie wollen, um zu beenden aus der ÄUßEREN Schleife, die Sie haben zu Rollen, mit einer goto-Anweisung...
- Sie können die Pause von der äußeren Schleife mehrere Möglichkeiten. Sie können
goto
können Siereturn
können Sie festlegenx = 10;
, und so onl. - David, vielen Dank für den Tipp zur Einstellung Voraussetzung für die outerloop als falsch, aber springen war genau das, was ich versucht habe zu vermeiden.
- Diese Frage wäre beantwortet worden, durch sich selbst, durch die tatsächlich diesen code testen. Haben Sie es versucht, bevor du?
- Es ist ein Urteil-Aufruf, welche Methode Ihnen am besten gefällt, und in jedem einzelnen Fall Ihre Liste der Optionen kann ein bisschen anders. Die Gefahr der Einstellung der outerloop Bedingung ist, dass es macht die Logik, die innere Schleife abhängig von der Logik der äußeren Schleife. Wenn das ist fundamental, um den bestimmten Abschnitt im code, dann ist das kein problem. Aber wenn Sie sonst semi-unabhängig, der Abhängigkeit kann der code fragiler und schwieriger zu pflegen und zu verstehen. Betrachten Sie alle Optionen, und verwenden Sie ein gutes Urteilsvermögen.
- Honky Tonk, ich würde, wenn meine Firma würde nicht mit einem obskuren remote kompilieren box, daher kann ich keine Vermutungen anstellen, ob Ihr compiler die gleiche Weise verhält wie der gcc auf meinem Rechner. Daher halte ich mich an c standard-Implementierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
break
bricht immer die innerste Schleife.Wenn Sie wollen ausbrechen aus beiden Schleifen, verwenden Sie ein label nach dem
for
und springen mit springen.if(x == 4) { x = 10; break; }
Alternativ können Sie ein flag, wenn Sie nicht verwenden möchten
goto
:Brechen, töten die nächste/innerste Schleife enthält die Pause. In deinem Beispiel, die Pause wird töten die do-while -, und die Steuerung springt dann zurück bis zu der for () - Schleife, und starten Sie einfach die nächste iteration der for().
Jedoch, da Sie gerade Bearbeiten, x sowohl in der do () - UND die for () - Schleifen, die Ausführung ist ein bisschen wackelig. Sie erzeugen eine Endlosschleife, sobald die äußeren X auf 5.
den beim brechen und die for-Schleife läuft weiter.