Ich habe gerade mit C ++ angefangen, habe aber einige Vorkenntnisse in anderen Sprachen (leider eine Weile zurück), aber ich habe eine seltsame Situation. Ich mochte es nicht, so viele IF-Anweisungen zu verwenden und wollte Switch / Cases verwenden, da es sauberer zu sein schien, und ich wollte in die Praxis kommen. Aber ..
Sagen wir, ich habe das folgende Szenario (theoretischer Code):
%Vor%Und das ist mein Problem. Nehmen wir an, ich wollte die WHILE-Schleife verlassen, würde es zwei Break-Anweisungen erfordern?
Das sieht offensichtlich falsch aus:
%Vor%Also kann ich nur eine IF-Anweisung auf dem 'a' machen, um Pause zu benutzen ;? Fehle ich etwas wirklich einfaches?
Dies würde viele meiner Probleme lösen, die ich gerade habe.
Ja, C und C ++ haben keine Möglichkeit, "mehrere zerbrechliche Blöcke zu verlassen" (wobei ein "zerbrechlicher Block" irgendeine Schleife oder ein Schalter ist). Problemumgehungen sind goto
s und die Verwendung boolescher Variablen, um aufzuzeichnen, ob ein äußerer "zerbrechlicher Block" auch brechen sollte (beides ist nicht elegant, aber das ist Leben).
Zwei break
-Anweisungen bringen Sie nicht aus der while-Schleife heraus. Der erste break
bringt Sie nur aus der switch
Anweisung und der zweite wird nie erreicht.
Was Sie brauchen, ist, die Bedingung der while-Schleife falsch zu machen, vorausgesetzt, es gibt nichts in der Schleife nach der switch
-Anweisung. Wenn nach dem Wechsel anderer Code vorhanden ist, sollten Sie die Bedingung nach dem switch
und break
dort überprüfen.
Sie könnten versuchen:
Ein Thema, das dieser Frage sehr ähnlich ist
Sie können die Schleife auch in eine Funktion kapseln und die Rückgabe innerhalb des Falls aufrufen, falls das Flag, das die while-Anweisung unterbricht, nicht ausreicht. Es ist nicht eine gute Programmierung für einige Leute, aber wenn Sie die Funktion einfach halten, sehe ich nicht warum nicht.
Sie könnten an dem benannten Loop-Idiom in C ++ interessiert sein.
%Vor%Sie könnten den Switch durch eine leicht überarbeitete OO-Lösung ersetzen ...
%Vor%Sie könnten Ihren Switch in ein ifsystem umwandeln. Es wird sowieso auf die gleiche Weise kompiliert werden.
Tags und Links c++ break switch-statement logic while-loop