Mit der switch-Anweisung kann man in Abhängigkeit von einem numerischen Ausdruck zu einer bestimmten Anweisung springen.
Direkt nach dem Schlüsselwort switch folgt in runden Klammern
ein numerischer Ausdruck, der ausgewertet wird. Danach folgt
ein Block von Anweisungen. Vor jeder Anweisung in diesem Block
dürfen eine oder mehrere case-Marken stehen. Eine solche
Marke besteht aus dem Schlüsselwort case, einer ganzzahligen
Konstanten und einem Doppelpunkt. Die
default-Marke
steht für alle Werte, zu denen kein case
angegeben ist und
kann auch weggelassen werden.
Wird eine Marke angesprungen, dann hindern folgende Marken nicht den
Programmfluß. Dies kann mit
einer break
-Anweisung verhindert
werden.
Beispiel:
/* koswitch.c 30. 7.95 kw */ int main() { int i; /* Einlesen einer ganzen Zahl von der Tastatur: */ scanf( "%d", &i ); /* Je nach dem, welchen Wert i hat, zu einer der * case-Marken springen: */ switch( i ) { case 1: puts( "i ist 1" ); case 2: case 3: puts( "i ist 1, 2 oder 3" ); break; case 9: puts( "i ist 9" ); default: puts( "was weiss denn ich" ); } puts( "fertig." ); /* Schlusstext. */ return 0; }
Dieses Programm liest eine Zahl (mit sscanf()) ein und verzweigt je nach dem Wert zu einer Anweisung in dem switch-Block.
Wurde der Wert 1 gelesen, dann springt das Programm zu der ersten puts( ¨i ist 1¨ )-Anweisung. Die nach case 3: folgende Anweisung wird aber auch noch ausgeführt; erst dann wird mit break die switch-Konstruktion verlassen und mit puts( ¨fertig.¨ ); fortgefahren.
Ebenso wird im Falle von i==9 auch der default-Teil mit ausgeführt.
Achtung! Wie in jedem Block dürfen auch in dem Anweisungsblock einer switch-Anweisung Variablen vereinbart werden. Allerdings dürfen diese Variablen bei ihrer Vereinbarung NICHT initialisiert werden! Ob ein Compiler dies allerdings als Fehler erkennt, ist fraglich. In jedem Fall wird eine solche Initialisierung nie ausgeführt!
AnyWare@Wachtler.de