Continue und break
-
Hallo Leute hab mal ne blöde Frage
Welcher Vorteile hat es denn wenn man "continue" oder "break" anweisungen in Schleifen benutzt
Im Grunde genommen kann man ja auf solche Anweisungen verzichten in dem man if-Verzweigungen oder Schleifenbedingungen geschickt formuliert.
-
naja ... ich weiss ned aber ab und an braucht man des schon ... wenn man z.b. die schleife vorzeitig abbrechen moechte wieso musst du die schleife nen paar mal durchlaufen auch wenn sie dank deiner "geschickt formulierten" if abfrage nix macht ... an der stelle kann man doch mit break raushuepfen...
naja continue is ja dafuer da um quasi den rest der schleife auszulassen und gleich zum naechsten durchlauf zu springen ... hmm .. ok ... hier muss ich sagen das ichs bis jetzt noch nicht eingesetzt habe...
-
Ich nutze continue z.B. um Wälder zu vermeiden.
/* Unschön */ for (i = 0; i < 10; ++i) { FILE* in = fopen("..."); if (in) { FILE* out = fopen("..."); if (out) { ... } } } /* Schöner */ for (i = 0; i < 10; ++i) { FILE *in = fopen("..."); if (!in) continue; FILE *out = fopen("..."); if (!out) continue; }Ist ein bisschen aus der Luft gegriffen, aber ich hab in einigen Schleifen ganz am Anfang ein bis zwei Zeilen mit Bedingungen die auf continue hinauslaufen.
Break ist nützlich um die Schleife in der Mitte zu verlassen, auch wenn sich das auch erzeugen lässt indem man dafür sorgt dass die Schleifenbedingung false wird und dann continue nutzt.
EDIT: Freudscher Vertipper

-
Du brauchst deutlich weniger if()-Verschachtelungen und kannst dich auf das wesentliche konzentrieren:
//ohne break bool ok=true; while(ok) { int i; cin>>i; if(!cin) ok=false; else { if(i<0) ok=false; else { ... } } } /*wenn du noch weitere Bedingungen abfragen willst, siehst du irgendwann den Wald vor lauter Bäumen (äh, Klammern) nicht mehr */ //mit break while(true) { int i; cin>>i; if(!cin) break; if(i<0) break; ... }(außerdem sieht es wesentlich übersichtlicher aus)
-
ich finde beide ganz nützlich:
for (victim=0; victim<1000; victim++) { int errorcode = inject_virus_into_exefile (victim); if (errorcode == FILE_DOESNT_EXIST) continue; if (errorcode == FESTPLATTE_KAPUTT) break; activate_virus (victim); }
-
-
vielen dank erstmal für eure raschen antworten und besondern dank für den Link