Kontrollstrukturen, Teil 3 |
|
Die switch-Anweisung wählt eine unter mehreren Alternativen aus:
switch (ausdruck) {
case konstante1: anweisung; break;
case konstante2: anweisung; break;
default: anweisung; break;
}
Der Ausdruck muss als Resultat einen
ganzzahligen Wert ergeben.
Dieser Wert wird mit allen case-Zweigen verglichen, bis eine Übereinstimmung gefunden wird.
Wird keine Übereinstimmung gefunden, so wird mit der Anweisung nach der default-Marke fortgefahren. Fehlt die default-Marke und es wird keine
Übereinstimmung gefunden, so findet keine Aktion statt.
Hinter case können nur ganzzahlige Konstanten stehen,
keine Fliesskommakonstanten und auch keine Ausdrücke (Formeln und dergleichen).
Es können aber auch mehrere case-Anweisungen nacheinander angegeben
werden, um die gleiche Aktion auszuführen (siehe nachfolgendes Beispiel).
Mit der Anweisung break wird die Verarbeitung im entsprechenden Zweig abgebrochen und die switch-Anweisung verlassen.
Achtung: | Fehlt die break-Anweisung, so werden die folgenden case-Zweige ebenfalls ausgeführt, bis entweder eine break-Anweisung gefunden wird oder bis kein weiterer case-Zweig mehr vorhanden ist. |
Jeder konstante Vergleichswert darf nur einmal vorkommen.
Beispiel für switch:
switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
printf ("c ist eine Ziffer\n");
break;
case '!': printf ("c ist ein Ausrufezeichen\n"); break;
case '(':
case ')':
printf ("c ist eine Klammer\n"); break;
default:
printf ("c ist mir unbekannt\n");
break;
}
|