Switch-Case in C verstehen: Syntax, Beispiele und Best Practices
Was ist die Switch-Anweisung in C?
Der switch-Konstrukt wertet einen einzelnen Ausdruck aus und leitet den Programmfluss zum passenden case-Label. Wenn keine Übereinstimmung gefunden wird, läuft der optionale default-Block. Dieses Entscheidungsinstrument ist besonders nützlich bei der Behandlung diskreter, konstanter Werte wie Menüoptionen, Fehlercodes oder Benutzerauswahlen.
Jedes case wird durch einen konstanten Ausdruck eindeutig identifiziert. Wenn der Wert des Ausdrucks mit einem Case-Label übereinstimmt, wird der entsprechende Anweisungsblock ausgeführt, und die Ausführung verlässt den switch (es sei denn, ein break wird weggelassen, was Fall-through verursacht).
Switch-Case Syntax
switch (expression) {
case constant1:
// statements
break;
case constant2:
// statements
break;
// …
default:
// statements
break;
}
// Anweisungen nach dem switch
- Der
expressionmuss einen integralen oder Enum-Typ ergeben. - Case-Labels sind konstante Werte; Duplikate erzeugen Mehrdeutigkeit und sollten vermieden werden.
- Jedes
caseendet mit einem Doppelpunkt und wird von einem Code-Block gefolgt. - Verwenden Sie
break, um einen Case zu beenden; ohne ihn setzt sich die Ausführung in nachfolgenden Cases fort (Fall-through). - Der
default-Block ist optional und läuft nur, wenn kein Case matcht.
Wie die Switch-Anweisung funktioniert
Das folgende Flussdiagramm veranschaulicht den Entscheidungsprozess für eine Switch-Anweisung:
Beispiel 1: Basis Switch
#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;
}
Ausgabe:
Value is 8
Beispiel 2: Default verwenden
#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");
}
return 0;
}
Ausgabe:
Other programming language
Beispiel 3: Kombinierte Cases
#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");
}
return 0;
}
Ausgabe:
Four, Five, or Six.
Verschachtelte Switches
Switches können verschachtelt werden, was hierarchische Entscheidungsfindung ermöglicht. Das folgende Beispiel demonstriert einen einfachen Authentifizierungsfluss:
#include <stdio.h>
int main() {
int ID, password;
printf("Please Enter Your ID:\n");
scanf("%d", &ID);
switch (ID) {
case 500:
printf("Enter your password:\n");
scanf("%d", &password);
switch (password) {
case 0: printf("Welcome Dear Programmer\n"); break;
default: printf("Incorrect password\n");
}
break;
default: printf("Incorrect ID\n");
}
return 0;
}
AUSGABE:
Please Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
Warum Switch umfangreichen If-Else-Ketten vorzuziehen ist
Während if-else-Ketten dieselbe Logik erreichen können, werden sie unhandlich, wenn die Optionen zunehmen. Switch-Statements bieten klarere Syntax, bessere Lesbarkeit und können vom Compiler in Sprungtabellen für konstante Ausdrücke optimiert werden.
Regeln für die Verwendung von Switch
- Der Steuerausdruck muss ein integraler oder Enum-Typ sein.
- Case-Labels müssen konstante, eindeutige Werte sein.
- Jedes Case-Label endet mit einem Doppelpunkt.
- Verwenden Sie
break, um unbeabsichtigtes Fall-through zu verhindern. - Nur ein
default-Label ist erlaubt. - Verschachtelte Switches sind erlaubt und oft nützlich.
Wichtigste Erkenntnisse
- Switch ist ein robustes Entscheidungsinstrument für diskrete Werte.
- Immer
breakeinfügen (außer beabsichtigtes Fall-through). - Case-Labels eindeutig und konstant halten.
- Der
default-Block ist optional, aber für Fehlerbehandlung empfohlen. - Verschachtelte Switches bieten mehrstufige Entscheidungslogik.
C Sprache
- C# Switch Statement meistern: Syntax, Beispiele & Best Practices
- C++ do‑while‑Schleife: Syntax, Praxisbeispiele und verschachtelte Schleifen
- C++ switch‑case meistern: Syntax, Einsatz und Praxisbeispiele
- C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
- C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
- C++-Funktionen erklärt: Mit praktischen Code-Beispielen
- C# Collections meistern: Praktisches Tutorial mit Real-World-Beispielen
- Python print()-Funktion: Praktischer Leitfaden mit Beispielen
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python round()-Funktion erklärt mit praktischen Beispielen