switch
-
folgendes beispiel:
char x='1'; switch(x) { case 1: printf("One"); break; default: printf("Default"); case 2: printf("Two"); break; case 3: printf("three); break; }
wieso wird "DefaultTwo" ausgegeben?
das er in den Default zweig geht is klar aber wieso führt er den zweig nach default auch aus?
wen man 2 und 3 vertauscht wir 3 ausgeführt...mfg
-
weil du kein break hast!
auch ein default muss man breaken
-
das ist schon klar, aber dürfte den zweig doch nur ausführen, wenn der ascii wert 2 wäre....
-
Original erstellt von mi+chl:
das ist schon klar, aber dürfte den zweig doch nur ausführen, wenn der ascii wert 2 wäre....Nein.
Da '1' weder zu case 1: noch zu case 2: und auch nicht zu case 3: passt, wird default ausgefuehrt. Und zwar solange bis entweder das ende vom switch erreicht wird, oder ein breakDu schreibst ja auch case 1: bla; break;
das musst du bei default uach machen, wenn er nicht 'durch fallen' soll, zum naechsten label
-
hmm...und ich dachte immer, daß er zweige nur ausführt wenn der ausdruck übereinstimmt....die breaks also nur da sind, das man sich das abarbeiten spart wenn man schon fündig geworden ist....