Sollten wir brechen die default-Fall im switch-Anweisung?

Vorausgesetzt-in diesem Beispiel-code (Quelle):

#include <stdio.h>

void playgame()
{
    printf( "Play game called" );
}
void loadgame()
{
    printf( "Load game called" );
}
void playmultiplayer()
{
    printf( "Play multiplayer game called" );
}

int main()
{
    int input;

    printf( "1. Play game\n" );
    printf( "2. Load game\n" );
    printf( "3. Play multiplayer\n" );
    printf( "4. Exit\n" );
    printf( "Selection: " );
    scanf( "%d", &input );
    switch ( input ) {
        case 1:            /* Note the colon, not a semicolon */
            playgame();
            break;
        case 2:
            loadgame();
            break;
        case 3:
            playmultiplayer();
            break;
        case 4:
            printf( "Thanks for playing!\n" );
            break;
        default:
            printf( "Bad input, quitting!\n" );
            break;
    }
    getchar();

    return 0;
}

sollten wir nutzen eine break; im letzten default Fall? Wenn ich es entfernen, ich sehe das gleiche Verhalten des Programms. Allerdings habe ich gesehen, dass andere Beispiele, auch ein break; im default Fall.

Warum? Gibt es einen Grund?

  • Sie brauchen nicht ein break nach jeder case-Bezeichnung, wenn es der Letzte ist. Ob es default oder sonst nichts zu tun hat mit dass.
  • Mit der option -pedantic neueren Versionen von gcc warn über eine fehlende break nach der letzten case.
  • Ich wurde gewarnt von Eclipse, ohne dieses flag. Hier ist die Zusammenstellung Befehl: gcc -std=c99 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c". Vielleicht -Wall war genug.
  • "Vielleicht -Mauer war genug für.": Noch besser! 🙂
InformationsquelleAutor gsamaras | 2014-10-01
Schreibe einen Kommentar