Richtige verwendung von Switch & Case



  • Hey,
    bin grad dabei n kleines prog zu schreiben.
    Bisher hab ich eine auswahl immer mit if/else gemacht.
    Also ein sehr umständlicher weg...
    Jetzt hab ich versucht das ganze mit switch & case zu amchen, doch wie geht das richtig?

    Bei mri sieht's ungefähr so aus, aber funktioniert iwie nicht richtig oO

    //...
    cin >>wahl;
    
    switch (wahl)
       {
         case ('1'):
           {
            cout << "bla bla" <<endl;
           }
    
        case ('2'):
           {
            ...
            }
        }
    //...
    

    Danke.



  • nee das musste so machen

    cin>>zahl;
    
    switch(zahl)
    {
             case 1:
               //tu das uns das...
             case 2:
               //...
               .
               .
               .
    }
    


  • funktioniert irgendwie nicht richtig ist keine fehlerbeschreibung.

    aber ich will mal nicht so sein, dir fehlt ein break nach dem case:

    switch(wahl)
    {
    case '1':
      ccout << "diesunddas" << endl;
      break; // das muss hierhin onst wird der nächste case-block auch aufgerufen
    case '2':
      cout << "2" << endl;
    case '3':
      cout << "3" << endl;
      break;
    }
    

    wenn wahl 2 ist, dann wird 2 und 3 ausgegeben weil ein break fehlt. Wenn wahl 1 ist, wird nur diesunddas ausgegeben, weil danach ein break kommt und die switch anweisung verlassen wird.



  • Wieso? Er will doch ein einzelnes Zeichen einlesen. Die Variable heißt wahl nicht zahl ⚠

    Was genau funktioniert nicht? So wie du es jetzt hast würde bei '1' auch der Block von '2' ausgeführt werden, da am Ende des Blocks kein break steht. Wenn du nicht weißt wofür man das braucht, solltest du in einem Tutorial/Buch das Kapitel zu Switch durchlesen.



  • ohh sorry für das zahl...naja er hat usn ja net gezeigt was wahl ist, ob von int oder von char? daher dachte ich,...



  • ...und den 'default' -zweig solltet ihr besser nicht auslassen. auch wenn er nicht gebraucht wird, dann wenigstens, um fehler abzufangen.
    🙂



  • Okay vielen dank 😉


Anmelden zum Antworten