C 10: Kontrollstrukturen, Verzweigungen
Das if/else if/else
-Konstrukt ist eigentlich selbsterklärend. Hierzu ein Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> int main() { int a = -1; printf("Zahl eingeben: "); scanf("%d", &a); if(a < 0) // a ist kleiner 0 { printf("Zahl ist kleiner 0\n"); } else if(a > 0) // a ist groesser 0 { printf("Zahl ist groesser 0\n"); } else // a ist 0 { printf("Zahl ist 0\n"); } return 0; } |
Dieses Programm prüft, in welchen Wertebereich die eingegebene Zahl fällt. Die geschweiften Klammern bilden einen Block, der aus mehreren Zeilen bestehen kann. Handelt es sich nur um eine Zeile, können die geschweiften Klammern also weggelassen werden, was das Programm gleich viel kompakter wirken lässt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main() { int a = -1; printf("Zahl eingeben: "); scanf("%d", &a); if(a < 0) printf("Zahl ist kleiner 0\n"); else if(a > 0) printf("Zahl ist groesser 0\n"); else // a == 0 printf("Zahl ist 0\n"); return 0; } |
Wer jedoch viele Werte zu vergleichen hat, kann auch switch
benutzen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> int main() { int a = 0; printf("Zahl eingeben: "); scanf("%d", &a); switch(a) { case 10: printf("Zahl ist 10\n"); break; case 20: printf("Zahl ist 20\n"); break; case 30: printf("Zahl ist 30\n"); break; default: printf("Unbekannte Zahl!\n"); } } |
In der switch
-Anweisung wird ein Ausdruck ausgewertet (hier nur die Zahl selbst) und danach zu dem entsprechenden Eintrag gesprungen, z.B. case 30
. Hier können auch mehrere Linien stehen und abgearbeitet werden. Wichtig ist aber, das break
nicht zu vergessen, dass aus einem case
-Eintrag herausspringt. Sollte man z.B. alles break
s vergessen, werden alle Strings ausgegeben.
Mehr zu break
und weiteren sehr wichtiges Kontrollstrukturen gibt’s das nächste Mal. Da sind Schleifen und noch einige Modifikatoren an der Reihe.