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 © 2005 CadSoft Computer GmbH |