Hallo Leute!
Ich habe eine Frage zur Switch-Anweisung und zwar zu dem Fall, dass die
default-Anweisung vor einem "case" steht.
Jetzt habe ich folgenden Beispielcode in einem C-Tutorial gefunden, und
bin mir nicht sicher ob die Erklärung richtig ist:
(Das Beispiel stammt von http://www.peacesoftware.de/ckurs7.html)
1 | x = 99;
|
2 | switch(x)
|
3 | {
|
4 | default:
|
5 | y = 0;
|
6 |
|
7 | case 1:
|
8 | mychar = 'a';
|
9 | break;
|
10 |
|
11 | case 2:
|
12 | y = 42;
|
13 | mychar = 'b';
|
14 | break;
|
15 | }
|
Dazu stand im Tutorial folgende Erklärung:
"In diesem kurzen Beispiel steht die default Anweisung oben und wird
nicht mit einem break beendet. Da beide folgenden cases nicht zutreffen,
wird der default block zuerst ausgeführt, es wird y gleich Null gesetzt.
Da kein break vorhanden ist, wird die nächste Anweisung, mychar = 'a';
auch ausgeführt. Danach steht break und es ist Schluß."
Jetzt meine Frage:
Dass der default-Zweig betreten wird ist klar, und weil dieser keine
break-Anweisung enthält, läuft das Programm weiter zu "case 1:". Aber:
warum wird dieser Teil betreten und mychar = 'a' ausgeführt? Ist das ein
Fehler in der Erklärung oder eine Verständnisfrage meinerseits?
Ich persönlich habe bis jetzt default-Anweisungen nur am Ende von
switch- Statements eingefügt, da es so meiner Meinung nach
übersichtlicher und üblich ist. Auf diesen Fall bin ich beim Einlesen in
einen fremden Code gestoßen und wollte jetzt recherchieren wie sich das
Programm verhält.
Vielen Dank für Eure Hilfe
Max