Break Continue - Versteh Ergebnis nicht
-
Hallo zusammen!
Ich habe hier folgenden C-Code.
int main(int argc, char * argv[] ){ int i,sum=0; for (i=0; i<10; i++){ switch (i){ case 2: case 3: continue; case 1: case 4: case 7: case 0: sum += 3*i + 1; default: continue; case 6: break; } break; } printf("Sum: %d", sum); return 0; }
Ich weiß zwar was rauskommt (da ich es einfach ausgetestet habe), aber ich weiß nicht wieso. Es wäre nett wenn mir jemand auf die Sprünge hilft, das Resultat nachzuvollziehen.
Gruß Manga
P.S. Als Ergebnis kommt 18 raus.
-
nimm dir einen bleistift und ein stueck papier und schreib jeden einzelnen schritt auf den das programm macht.
verwirrend ist vielleicht:
case labels fallen durch. wenn i zB 7 ist, wird sowohl die rechnung in case 0 als auch das continue in default ausgefuehrt.break bricht aus dem aktuellen kontext heraus. ein break innerhalb des switches beendet den switch, ein break in for beendet for. continue agiert genauso, aber ein switch kann man nicht continuen - ergo gelten alle continues fuer das for.
-
Continue "springt zum for zurück".
break beendet ein switch bzw ein for halt auch.
Such Dir raus was passiert mit i == 6.
-
Shade Of Mine schrieb:
wenn i zB 7 ist, wird sowohl die rechnung in case 0 als auch das continue in default ausgefuehrt.
i wird aber nie 7 ... ansonsten wäre dass ergebnis weitaus höher als 18. ...
Scheppertreiber schrieb:
Such Dir raus was passiert mit i == 6.
An dieser Stelle wir sowohl der Switch-Block, als auch die For-Schleife mit break beendet ...
Scheppertreiber schrieb:
Continue "sprint zum for zurück".
dass er bei continue zurückspringt, war mir nicht bewusst .... dass ist des rätsels lösung ... danke dir
-Gruß Manga
-
Gärrrn Gschäään ...