Geschrieben von p3t3r am 18.06.2004, 18:12

Die switch-Anweisung erlaubt den Programmierer eine Fallabfrage zu programmieren.

Syntax:

switch(Ausdruck){
case (Konstante):
case (Konstante):
case (Konstante):
...
default:
}

Dabei ist zu beachten: In einer switch-Anweisung können undendlich viele "case" vorkommen. Im "Ausdruck" - Feld darf kein Wert vom Datentyp float oder double stehen. "default" muss in der switch - Anweisung nicht vorkommen, wenn vor der Anweisung eine Bedingte Verzweigung (if-else) steht. "default" muss nicht an letzter Stelle stehen.

Ablauf einer switch - Anweisung:
Zunächst wird der Ausdruck ausgewertet. Dann wird geprüft ob eine der Konstanten nach dem Schlüsselwort case mit dem Ergebnis der Auswertung übereinstimmt. Wird eine solche Konstante gefunden, so werden die entsprechenden Anweisung (der zur Konstante gehörige Zweit) sowie alle weiteren Anweisungen ausgeführt. Nachdem alle Anweisungen im case geschrieben wurden muss ein break; geschrieben werden, da sonst der darauf folgende case-Zweig ebenfalls ausgeführt wird.

Beispiel: Es wird ein Zeichen eingegeben. Die switch-Anweisung überprüft ob a, b oder c eingegeben worden ist. Wenn ein anderes Zeichen eingegeben wurde wird "default" ausgeführt. Das Beispiel ist in 2 Varianten zu sehen. Einmal mit (1) "default" und einmal ohne (2). Wobei zu beachten ist das bei Variante 2 vor der switch-Anweisung eine Bedingte Verzweigung steht.

Variante 1: mit default

printf("Buchstabe eingeben. ");
scanf("%c", &zeichen);
switch(zeichen){
case "a": printf("Der eingegebene Buchstabe ist ein \"a\".");
break;
case "b": printf("Der eingegebene Buchstabe ist ein \"b\".");
break;
case "c": printf("Der eingegebene Buchstabe ist ein \"c\".");
break;
default: printf("Es wurde keines der Zeichen \"a, b, c\" eingegeben.");
break;
}

Variante 2: ohne default

printf("Buchstabe eingeben. ");
scanf("%c", &zeichen);
if((zeichen == "a") || (zeichen == "b") || (zeichen == "c"))
switch(zeichen){
case "a": printf("Der eingegebene Buchstabe ist ein \"a\".");
break;
case "b": printf("Der eingegebene Buchstabe ist ein \"b\".");
break;
case "c": printf("Der eingegebene Buchstabe ist ein \"c\".");
break;
}
else
printf("Es wurde keines der Zeichen \"a, b, c\" eingegeben.");

Bewertung Anzahl
6
33,3 %
1 Bewertungen
5
66,7 %
2 Bewertungen