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 break 😉

    Du 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....


Anmelden zum Antworten