Um in Abhängigkeit von einem ganzzahligen Ausdruck verschiedene Anweisungen zu durchlaufen, wird die switch-Verzweigung eingesetzt. Sie hat folgende Syntax:
switch ([INIT;] AUSDRUCK)
{
case K1:
ANWEISUNGEN1
[break;]
case K2:
ANWEISUNGEN2
[break;]
...
case Kx:
ANWEISUNGENx
[break;]
[default:
ANWEISUNGENy]
}
Eingeleitet wird die Verzweigung durch das Schlüsselwort switch. Innerhalb der switch-Klammer steht optional ein Initialisierungsausdruck INIT und danach der auszuwertende Ausdruck AUSDRUCK. Darauf folgt ein Block {...} und innerhalb des Blocks stehen die mit einem case eingeleiteten Einsprungmarken. Die Angaben in eckigen Klammern sind wieder optional.
Der Ablauf der switch-Verzweigung ist Folgender:
Fehlt der default-Zweig und ergibt die Auswertung des switch-Ausdrucks keine Übereinstimmung mit einem der aufgeführten case-Literale, wird keine Aktion ausgeführt und es geht mit der nächsten Anweisung nach dem switch-Block weiter.
Die innerhalb eines case-Zweigs stehenden Anweisungen müssen nicht in einen Block {...} eingeschlossen werden, mit einer Ausnahme: Werden innerhalb eines case-Zweigs Variablen definiert, muss dies in einem Block {...} erfolgen.
Die break-Anweisung innerhalb eines switch-Blocks bewirkt ein unmittelbares Verlassen des Blocks, d.h. nach dem break wird als nächstes die Anweisung ausgeführt, die nach dem switch-Block folgt. Ohne break-Anweisung werden alle nach der Einsprungsmarke (case Kx:) folgenden Anweisungen bis zum Ende des switch-Blocks oder bis zum Erreichen eines break ausführt.
1: // SWITCH-CASE mit break-Anweisung
2: auto var = 2;
3: switch (var)
4: {
5: case 1:
6: std::cout << "Variable gleich 1\n";
7: break;
8: case 2:
9: std::cout << "Variable gleich 2\n";
10: break;
11: case 3:
12: std::cout << "Variable gleich 3\n";
13: break;
14: default:
15: std::cout << "Variable weder 1,2 noch 3\n";
16: }
Variable gleich 2
1: // SWITCH-CASE ohne break-Anweisung
2: auto var = 2;
3: switch (var)
4: {
5: case 1:
6: std::cout << "Variable gleich 1\n";
7: case 2:
8: std::cout << "Variable gleich 2\n";
9: case 3:
10: std::cout << "Variable gleich 3\n";
11: default:
12: std::cout << "Variable weder 1,2 noch 3\n";
13: }
Variable gleich 2
Variable gleich 3
Variable weder 1,2 noch 3
Sind für mehrere Ergebnisse des switch-Ausdrucks die gleichen Anweisungen auszuführen, können mehrere case-Anweisungen unmittelbar aufeinanderfolgen.
1: char alpha;
2: ...
3: switch (alpha)
4: {
5: case 'e':
6: case 'E':
7: Aktion1;
8: break;
9: case 'a':
10: case 'A':
11: Aktion2;
12: }
Im Beispiel wird eine char-Variable alpha ausgewertet. Und unabhängig davon, ob ein e oder a als Groß- oder Kleinbuchstabe in der Variable abgelegt ist, es wird immer die gleiche Aktion ausgeführt.
int std::toupper(int toConvert);
int std::tolower(int toConvert);
Kleinbuchstaben in Großbuchstaben umwandeln und umgekehrt. Der umzuwandelnde Buchstabe wird als int-Datum übergeben. Beide Funktionen liefern als Returnwert den gewandelten Buchstaben. Handelt es sich beim übergebenen Datum nicht um einen Buchstaben, wird der Originalwert zurückgeliefert. Die Funktion ist in der Header-Datei <cctype> deklariert, die dann einzubinden ist.
Copyright 2024 © Wolfgang Schröder
E-Mail mit Fragen oder Kommentaren zu dieser Website an: info@cpp-tutor.de
Impressum & Datenschutz