switch (sw_exp) { case case_exp: case_statement ... [default: def_statement] }und erlaubt die Übergabe der Steuerung an eines von mehreren case-Statements (mit "case" als Label), abhängig vom Wert des Ausdrucks sw_exp (der vom Integral-Typ sein muß).
Jedes case_statement kann mit einem oder mehreren case-Labels versehen sein. Die Auswertung des Ausdrucks case_exp jedes case-Labels muß einen konstanten Integer-Wert ergeben, der innerhalb des umschließenden switch-Statements nur einmal vorkommt.
Es darf höchstens ein default-Label vorkommen.
Nach der Auswertung von sw_exp werden die case_exp-Ausdrücke auf Übereinstimmung geprüft. Wenn eine Übereinstimmung gefunden wurde, wird die Steuerung zum case_statement mit dem entsprechenden case-Label transferiert.
Wird keine Übereinstimmung gefunden und gibt es ein default-Label, dann erhält def_statement die Steuerung. Anderenfalls wird kein Statement innerhalb der switch-Anweisung ausgeführt.
Die Programmausführung wird nicht beeinflußt, wenn case- und default-Labels auftauchen. Die Steuerung wird einfach an das folgende Statement übergeben.
Um die Programmausführung am Ende einer Gruppe von Statements für ein bestimmtes case zu stoppen, verwenden Sie das break-Statement.
Beispiel
string s = "Hello World";
int vowels = 0, others = 0;
for (int i = 0; s[i]; ++i)
switch (toupper(s[i])) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': ++vowels;
break;
default: ++others;
}
printf("There are %d vowels in '%s'\n", vowels, s);
Index | Copyright © 1999 CadSoft Computer GmbH |