Sprachkonzepte Preprozessor Operatoren Kontrollstrukturen Typen OOP Bibliotheken |
caseDas case-Keyword dient bei einer switch-Struktur dazu, ein Label für einen bestimmten Fall der switch-Bedingung mittels einer eindeutigen Sprungadresse zu kennzeichnen. Dabei steht der zu behandelnde Fall einfach nach dem
Siehe auch switch, default, break DetailsWie im obigen Beispiel zu sehen ist, kann der Wert des behandelten Falls beliebig angegeben werden, solange er eine Dezimalzahl darstellt. Erlaubt sind somit: Integralzahlen, Hexadezimalzahlen, Oktalzahlen, ASCII-Characters in einfachen 'Anführungszeichen' und jegliche konstante Anweisungen (keine Funktionen, keine Variablen), die zu einem integralen Wert evaluieren. Folgendes sind einige Beispiele:
Die verschiedenen Fälle müssen innerhalb derselben switch-Struktur eindeutig sein. Die durch das Keyword definierten Sprungadressen sind jedoch Pseudolabels und haben nur innerhalb der betreffenden switch-Struktur Gültigkeit. In jeder anderen switch-Struktur können wiederum sämtliche case-Labels stehen. Ausserhalb einer switch-Struktur ist ein case-Label nicht erlaubt. Die case-Labels können auch innerhalb der Struktur NICHT mittels der goto-Anweisung angesprungen werden. Man beachte, dass nicht sämtliche Fälle durch case-Keywords beschrieben werden müssen und dass auch nicht sämtliche beschriebenen Fälle im laufenden Programm tatsächlich angesprungen werden. Dies ist im Grunde genommen logisch, sei hier aber einfach bemerkt. Am Ende eines Falles, beziehungsweise vor Beginn des nächsten Falles muss sehr häufig (aber nicht zwingend) die break-Anweisung stehen, welche nach der Behandlung des Falles zum Ende der switch-Struktur springt. Diese Anweisung kann leicht vergessen gehen und führt zu schwer auffindbaren Fehlern, da ohne diesen Sprung die Anweisungen des nächsten Falles ebenfalls ausgeführt werden. Mehrere FälleIn anderen Sprachen ist es teilweise möglich beispielsweise eine Angabe wie
Hierzu die Erklärung: Da das case-Keyword grundsätzlich nur ein Label, also eine Sprungadresse definiert, werden durch die fünf aufeinanderfolgenden case-Statements fünf Sprungadressen für die fünf Fälle definiert, welche alle auf dieselbe Codezeile zeigen. Wichtig ist dabei, dass zwischen den case-Statements kein Code, insbesondere keine break-Anweisung steht. Diese Methode scheint umständlich, es gibt jedoch Fälle, wo genau dieses Verfahren angewendet wird. Beispielsweise, wenn man bei einem Eingabewert überprüfen will, um welchen Buchstaben es sich handelt, und wenn es keine Rolle spielt, ob er gross oder klein geschrieben ist:
Falls man grosse Intervalle prüfen muss und nicht sämtliche darin enthaltenen Fälle aufschreiben will, so empfielt es sich, anstelle der switch-Struktur eine if-Struktur für diesen speziellen Fall zu programmieren.
|