switch…case in C (Switch-Anweisung in C) mit Beispielen
Was ist eine Switch-Anweisung in C?
Switch-Anweisung in C testet den Wert einer Variablen und vergleicht ihn mit mehreren Fällen. Sobald die Fallübereinstimmung gefunden wurde, wird ein Anweisungsblock ausgeführt, der mit diesem bestimmten Fall verknüpft ist.
Jedes Gehäuse in einem Block eines Schalters hat einen anderen Namen/eine andere Nummer, die als Kennung bezeichnet wird. Der vom Benutzer bereitgestellte Wert wird mit allen Fällen innerhalb des Schalterblocks verglichen, bis eine Übereinstimmung gefunden wird.
Wenn KEINE Übereinstimmung zwischen Groß- und Kleinschreibung gefunden wird, wird die Standardanweisung ausgeführt und die Steuerung verlässt den Switch-Block.
Wechseln Sie die Groß-/Kleinschreibungssyntax
Eine allgemeine Syntax für die Implementierung von Switch-Case in einem C-Programm lautet wie folgt:
switch( expression ) { case value-1: Block-1; Break; case value-2: Block-2; Break; case value-n: Block-n; Break; default: Block-1; Break; } Statement-x;
- Der Ausdruck kann ein ganzzahliger Ausdruck oder ein Zeichenausdruck sein.
- Die Werte 1, 2 und n sind Fallbezeichnungen, mit denen jeder Fall einzeln identifiziert wird. Denken Sie daran, dass die Groß-/Kleinschreibung nicht identisch sein sollte, da dies zu Problemen bei der Ausführung eines Programms führen kann. Angenommen, wir haben zwei Fälle mit derselben Bezeichnung wie „1“. Während der Ausführung des Programms wird dann der zuerst angezeigte Fall ausgeführt, obwohl Sie möchten, dass das Programm einen zweiten Fall ausführt. Dies führt zu Problemen im Programm und liefert nicht die gewünschte Ausgabe.
- Fallbezeichnungen enden immer mit einem Doppelpunkt ( : ). Jeder dieser Fälle ist mit einem Block verbunden.
- Ein Block besteht aus nichts anderem als mehreren Anweisungen, die für einen bestimmten Fall gruppiert sind.
- Immer wenn der Schalter ausgeführt wird, wird der Wert von test-expression mit allen Fällen verglichen, die wir innerhalb des Schalters definiert haben. Angenommen, der Testausdruck enthält den Wert 4. Dieser Wert wird mit allen Fällen verglichen, bis der Fall, dessen Bezeichnung vier im Programm gefunden wird. Sobald ein Fall gefunden wird, wird der mit diesem bestimmten Fall verbundene Anweisungsblock ausgeführt und die Steuerung geht aus dem Schalter.
- Das Schlüsselwort break gibt jeweils das Ende eines bestimmten Falls an. Wenn wir die Pause nicht in jedem Fall setzen, führt der Schalter in C alle Fälle weiter aus, bis das Ende erreicht ist, obwohl der spezifische Fall ausgeführt wird. Dies sollte nicht passieren; Daher müssen wir in jedem Fall immer das Schlüsselwort break eingeben. Break beendet den Fall, sobald er ausgeführt wird, und das Steuerelement fällt aus dem Schalter.
- Der Standardfall ist optional. Wenn der Wert des Testausdrucks keinem der Fälle innerhalb des Schalters entspricht, wird der Standardfall ausgeführt. Andernfalls ist es nicht erforderlich, den Standardfall in den Schalter zu schreiben.
- Sobald der Schalter ausgeführt wird, geht die Steuerung zur Anweisung-x über und die Ausführung eines Programms wird fortgesetzt.
Flussdiagramm der Switch-Anweisung
Das folgende Diagramm veranschaulicht, wie ein Fall im Switch-Case ausgewählt wird:
Beispiel für einen Switch-Fall in C
Das folgende Programm veranschaulicht die Verwendung des Schalters:
#include <stdio.h> int main() { int num = 8; switch (num) { case 7: printf("Value is 7"); break; case 8: printf("Value is 8"); break; case 9: printf("Value is 9"); break; default: printf("Out of range"); break; } return 0; }
Ausgang:
Value is 8
- Im gegebenen Programm haben wir initialisiert a erklärt Variable Zahl mit Wert 8.
- Ein Schalterkonstrukt wird verwendet, um den in der Variablen num gespeicherten Wert zu vergleichen und den mit dem übereinstimmenden Fall verbundenen Anweisungsblock auszuführen.
- Da in diesem Programm der in der Variablen num gespeicherte Wert acht ist, führt ein Schalter den Fall aus, dessen Fallbezeichnung 8 ist. Nach der Ausführung des Falls fällt die Steuerung aus dem Schalter und das Programm wird mit dem erfolgreichen Ergebnis beendet Drucken des Werts auf dem Ausgabebildschirm.
Versuchen Sie, den Wert der Variablen num zu ändern, und bemerken Sie die Änderung in der Ausgabe.
Als Beispiel betrachten wir das folgende Programm mit den Standardeinstellungen:
#include <stdio.h> int main() { int language = 10; switch (language) { case 1: printf("C#\n"); break; case 2: printf("C\n"); break; case 3: printf("C++\n"); break; default: printf("Other programming language\n");}}
Ausgang:
Other programming language
Wenn Sie in C mit Switch Case arbeiten, gruppieren Sie mehrere Cases mit eindeutigen Beschriftungen. Sie müssen jeweils eine Break-Anweisung einführen, um am Ende einer Switch-Anweisung zu verzweigen.
Der optionale Standardfall wird ausgeführt, wenn keine anderen Übereinstimmungen vorgenommen werden.
Wir betrachten die folgende Switch-Anweisung:
#include <stdio.h> int main() { int number=5; switch (number) { case 1: case 2: case 3: printf("One, Two, or Three.\n"); break; case 4: case 5: case 6: printf("Four, Five, or Six.\n"); break; default: printf("Greater than Six.\n");}}
Ausgang:
Four, Five, or Six.
Verschachtelter Schalter in C
In Ckönnen wir einen inneren Schalter in einen äußeren Schalter einbetten. Außerdem können die Fallkonstanten des inneren und äußeren Schalters gemeinsame Werte und ohne Konflikte haben.
Wir betrachten das folgende Programm, in dem der Benutzer seine eigene ID eingibt. Wenn die ID gültig ist, wird er aufgefordert, sein Passwort einzugeben. Wenn das Passwort korrekt ist, druckt das Programm den Namen des Benutzers aus. Andernfalls druckt das Programm „Falsches Passwort“ aus. Wenn die ID nicht existiert, druckt das Programm „Falsche ID“ aus.
#include <stdio.h> int main() { int ID = 500; int password = 000; printf("Plese Enter Your ID:\n "); scanf("%d", & ID); switch (ID) { case 500: printf("Enter your password:\n "); scanf("%d", & password); switch (password) { case 000: printf("Welcome Dear Programmer\n"); break; default: printf("incorrect password"); break; } break; default: printf("incorrect ID"); break; } }
Ausgang:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- Im gegebenen Programm haben wir die Initialisierung von zwei Variablen erklärt: ID und Passwort
- Zum Vergleichen des in der Variablen-ID eingegebenen Werts wird ein äußeres Schalterkonstrukt verwendet. Es führt den Anweisungsblock aus, der dem übereinstimmenden Fall zugeordnet ist (wenn ID==500).
- Wenn die Blockanweisung mit der übereinstimmenden Groß-/Kleinschreibung ausgeführt wird, wird ein innerer Schalter verwendet, um die in der Variable „Passwort“ eingegebenen Werte zu vergleichen und die mit der übereinstimmenden Groß-/Kleinschreibung verknüpften Anweisungen auszuführen (wenn Passwort==000).
- Andernfalls löst der Switch Case den Default Case aus und druckt den entsprechenden Text zur Programmübersicht.
Warum brauchen wir ein Switch-Gehäuse?
Es gibt ein potenzielles Problem mit dem if-else-Anweisung Das heißt, die Komplexität des Programms steigt, wenn die Anzahl der alternativen Pfade zunimmt. Wenn Sie im Programm mehrere if-else-Konstrukte verwenden, kann das Programm schwer lesbar und verständlich werden. Manchmal kann es sogar den Entwickler verwirren, der das Programm selbst geschrieben hat.
Die Lösung für dieses Problem ist die switch-Anweisung.
Regeln für die Switch-Anweisung
- Ein Ausdruck muss immer zu einem Ergebnis ausgeführt werden.
- Fallbezeichnungen müssen konstant und eindeutig sein.
- Fallbezeichnungen müssen mit einem Doppelpunkt ( : ) enden.
- In jedem Fall muss ein Schlüsselwort break vorhanden sein.
- Es kann nur eine Standardbezeichnung geben.
- Wir können mehrere Switch-Anweisungen verschachteln.
Zusammenfassung
- Ein Schalter ist ein Entscheidungskonstrukt in 'C. "
- Ein Schalter wird in einem Programm verwendet, in dem mehrere Entscheidungen beteiligt sind.
- Ein Schalter muss einen ausführbaren Testausdruck enthalten.
- Jeder Fall muss ein Schlüsselwort „break“ enthalten.
- Die Fallbezeichnung muss konstant und eindeutig sein.
- Die Standardeinstellung ist optional.
- Mehrere Switch-Anweisungen können ineinander verschachtelt werden.