|
|
||
|
|
||
| .. SWITCH -Vzweigung | ||
|
|
||
|
Die switch -Abfrage und ihre Verzweigungen
können nur innerhalb von Funktionen benutzt werden, auch
wenn ihre Syntax der einer Funktion ähnlich ist. Ihre
Aufgabe ist folgende..
Zwischen den runden Klammern des switch - Kopfes muss ein Ausdruck stehen, der sich zu einer Ganzzahl (einem Integer) auswerten lässt, oder eine Variable die einen Integer beinhaltet. Dieser wird mit den Konstanten hinter den 'case' -Anweisungen auf Gleichheit verglichen. Trifft es zu, dass die 'int Variable' mit einer der Konstanten gleich ist, dann werden alle nachfolgenden Anweisungen, mit Ausnahme der Anweisungen des default-Blocks bearbeitet. Auch dann, wenn vor ihrer Zeile wiederum 'case Konstante:' steht. Will man, dass die Bearbeitung der Anweisungen nach einem gelungenen Vergleich, vor dem Erreichen des Endes der case - Liste abbricht, so muss hinter der letzten gewünschten Anweisung das Schlüsselwort 'break' stehen. Die Anweisungen nach 'default:' werden nur dann durchlaufen, wenn keiner der vorherigen Vergleiche zutraf. Die 'default' - Zeile ist optional. Achtung: Die Anweisungen hinter 'case' oder 'default', die auch auf Einzelzeilen verteilt werden können, müssen nicht in geschweifte Klammern gesetzt werden. Geschieht dies trotzdem, ändert das nichts an der zuvor beschriebenen Arbeitsweise. Mit Anweisungen sind alle gültigen CBefehle und Funktionen gemeint, also von den Schleifenkonstruktionen über die if-elseif-else Abfrage bis hin zu untergeordneten switch Abfragen. |
||
| Syntax: | ||
| // linearer Programmteil switch (int Variable) { case Konstante1: Anweisung; [Anweisung;] [break;] case Konstante2: Anweisung; case Konstante3: Anweisung; [Anweisung;] case Konstante4: Anweisung; [break;] .. [default: Anweisung;[Anweisung;]] } // linearer Programmteil Fortsetzung | ||
|
Beispiel: |
||
|
|
||
#include <conio.h> // für getch() und printf()
void main (void)
{
char c;
start:
c= getch(); // Eingabezeichen holen
switch (c) // ..folgend vergleichen
{
case 'M': printf("Mo"); // .. Ausgabe Mo,Di,Fr
case 'D': printf("Di"); // .. Ausgabe Di,Fr
case 'F': printf("Fr"); break; // .. Ausgabe Fr, ende
case 0x1B: return; // [ESC] Programmabbruch
case 'R':
case 'r': c=50+10; // [r][R] rechnen und
printf("%u",c); // .. Ausgabe 60, ende
// wegen folgendem default
default : putch(c); // kein Vergleich traf zu,
// Tastendruck ausgeben
}
goto start;
}
|
|
|
|
|
| Bemerkungen: | ||
|
||
|
|
.de