Die Switch-Anweisung in C ist eine Alternative zur if-else-if-Ladder-Anweisung, die es uns ermöglicht, mehrere Operationen für die verschiedenen möglichen Werte einer einzelnen Variablen namens Switch-Variable auszuführen. Hier können wir in mehreren Fällen verschiedene Anweisungen für die verschiedenen Werte einer einzelnen Variablen definieren.
Die Syntax der Switch-Anweisung in C Sprache ist unten angegeben:
switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; }
Regeln für die Switch-Anweisung in der C-Sprache
- Der Ausdruck wechseln muss vom Typ Ganzzahl oder Zeichen sein.
- Der Fallwert muss eine Ganzzahl oder eine Zeichenkonstante sein.
- Der Fallwert kann nur innerhalb der switch-Anweisung verwendet werden.
- Der break-Anweisung Im Schalterfall ist dies kein Muss. Es ist optional. Wenn im Fall keine Break-Anweisung gefunden wird, werden alle Fälle ausgeführt, die nach dem übereinstimmenden Fall vorhanden sind. Es ist bekannt als durchfallen der Status der C-Switch-Anweisung.
Versuchen wir es anhand der Beispiele zu verstehen. Wir gehen davon aus, dass es folgende Variablen gibt.
int x,y,z; char a,b; float f;
Gültiger Schalter | Ungültiger Schalter | Gültiger Fall | Ungültiger Fall |
---|---|---|---|
Schalter(x) | Schalter(f) | Fall 3; | Fall 2,5; |
Schalter(x>y) | Schalter(x+2,5) | Fall 'a'; | Fall x; |
Schalter(a+b-2) | Fall 1+2; | Fall x+2; | |
switch(func(x,y)) | Fall 'x'>'y'; | Fall 1,2,3; |
Flussdiagramm der Switch-Anweisung in C
Funktionsweise der Switch-Case-Anweisung
Zunächst wird der in der switch-Anweisung angegebene ganzzahlige Ausdruck ausgewertet. Dieser Wert wird dann nacheinander mit den in den verschiedenen Fällen angegebenen konstanten Werten abgeglichen. Wenn eine Übereinstimmung gefunden wird, werden alle in diesem Fall angegebenen Anweisungen zusammen mit allen nach diesem Fall vorhandenen Fällen einschließlich der Standardanweisung ausgeführt. Keine zwei Fälle können ähnliche Werte haben. Wenn der übereinstimmende Fall eine Break-Anweisung enthält, werden alle danach vorhandenen Fälle übersprungen und die Steuerung verlässt den Schalter. Andernfalls werden alle auf den übereinstimmenden Fall folgenden Fälle ausgeführt.
Wie funktioniert die C-Switch-Anweisung?
Lassen Sie uns Schritt für Schritt durchgehen, wie die switch-Anweisung in C funktioniert:
Folgendes berücksichtigen switch-Anweisung :
C-Programm:
#include int main() { int num = 2; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; } return 0; }
Ausgabe
Value is 2
Schritt-für-Schritt-Prozess:
- Der Schaltervariable Num ausgewertet wird. In diesem Fall, Auf eins wird mit dem initialisiert Wert 2 .
- Der ausgewerteter num (2) Wert wird mit den jeweils im Label angegebenen Konstanten verglichen Schalterblock .
- Der switch-Anweisung entspricht dem bewerteter Wert (2) mit der in der angegebenen Konstante zweiter Fall (Fall 2) . Da eine Übereinstimmung vorliegt, springt das Programm zu dem zugehörigen Codeblock passender Koffer (Fall 2) .
- Der mit verknüpfte Codeblock Fall 2 ausgeführt wird, was gedruckt wird „Wert ist 2“ zur Konsole.
- Der 'brechen' Das Schlüsselwort ist im Codeblock von vorhanden Fall 2 . Dadurch bricht das Programm unmittelbar nach der Ausführung des Codeblocks die Switch-Anweisung ab.
- Die Programmsteuerung wird danach fortgesetzt switch-Anweisung und alle darauf folgenden Aussagen switch-Anweisung werden ausgeführt. In diesem Fall gibt es nach dem Wechsel keine Anweisungen, sodass das Programm beendet wird.
- Der switch-Anweisung bewertete den Wert der Variable Num , fand eine Übereinstimmung mit Fall 2, führte den entsprechenden Codeblock aus und beendete dann die Schalterblock aufgrund der Anwesenheit der 'break'-Anweisung .
Beispiel einer switch-Anweisung in C
Sehen wir uns ein einfaches Beispiel einer C-Sprachwechselanweisung an.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Ausgabe
CSS für fett
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Beispiel 2 für den Schalterfall
#include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } }
Ausgabe
hi
Break- und Default-Schlüsselwort in der Switch-Anweisung
Lassen Sie uns das erklären und definieren 'brechen' Und 'Standard'-Schlüsselwörter im Kontext der switch-Anweisung, zusammen mit Beispielcode und Ausgabe.
1. Keyword brechen:
Der Schlüsselwort „break“. wird innerhalb des jeweiligen Codeblocks verwendet, um die Switch-Anweisung vorzeitig zu beenden. Wenn das Programm auf a 'break'-Anweisung Innerhalb eines Case-Blocks wird der sofort verlassen switch-Anweisung , wodurch die Ausführung nachfolgender Fallblöcke verhindert wird. Der 'break'-Anweisung ist entscheidend für die Vermeidung von Switch-Anweisungen. 'durchfallen' Verhalten.
Beispiel:
Nehmen wir ein Programm, um die Verwendung des zu verstehen Schlüsselwort break in C.
#include int main() { int num = 3; switch (num) { case 1: printf('Value is 1 '); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2 '); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3 '); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Ausgabe
Value is 3
Erläuterung:
In diesem Beispiel ist die switch-Anweisung bewertet den Wert des Variable Num (welches ist 3 ) und gleicht es mit ab Fall 3 . Der mit verknüpfte Codeblock Fall 3 ausgeführt wird, Drucken „Wert ist 3“ zur Konsole. Der 'break'-Anweisung innerhalb Fall 3 stellt sicher, dass das Programm die Switch-Anweisung unmittelbar nach der Ausführung dieses Case-Blocks verlässt und so die Ausführung anderer Cases verhindert.
2. Standardschlüsselwort:
Wenn nichts davon Fallkonstanten verbinde die ausgewerteter Ausdruck , es fungiert als Sammelfall . Wenn kein passender Fall vorhanden ist und a Der Fall „default“ existiert , der Codeblock, der dem zugeordnet ist 'Standard' Fall wird ausgeführt. Es wird häufig verwendet, um Umstände zu behandeln, in denen keine der angegebenen Situationen auf die bereitgestellte Eingabe zutrifft.
Beispiel:
Nehmen wir ein Programm, um die Verwendung des zu verstehen Standardschlüsselwort in C.
#include int main() { int num = 5; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Ausgabe
Value is not 1, 2, or 3
Erläuterung:
In diesem Beispiel ist die switch-Anweisung untersucht den Wert der Variable Num (welches ist 5 ). Da kein Fall mit der Zahl übereinstimmt, führt das Programm den mit dem verknüpften Codeblock aus 'Standard'-Fall . Der 'break'-Anweisung im Inneren 'Standard'-Fall stellt sicher, dass das Programm die beendet switch-Anweisung nach der Ausführung des 'Standard' Fallblock.
Beide 'brechen' Und 'Standard'-Schlüsselwörter spielen eine wesentliche Rolle bei der Steuerung des Ausführungsflusses innerhalb einer Switch-Anweisung. Der 'break'-Anweisung hilft, das Durchfallverhalten zu verhindern, während die 'Standard'-Fall bietet eine Möglichkeit, nicht übereinstimmende Fälle zu bearbeiten.
Die C-Switch-Anweisung ist ein Fehlschlag
In der C-Sprache lautet die Switch-Anweisung „fall through“; Das heißt, wenn Sie im Switch-Fall keine Break-Anweisung verwenden, werden alle Fälle nach dem entsprechenden Fall ausgeführt.
Versuchen wir, den Fall-Through-Status der Switch-Anweisung anhand des folgenden Beispiels zu verstehen.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10 '); case 50: printf('number is equal to 50 '); case 100: printf('number is equal to 100 '); default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Ausgabe
enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Ausgabe
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Verschachtelte Switch-Case-Anweisung
Wir können innerhalb einer Switch-Anweisung so viele Switch-Anweisungen verwenden, wie wir möchten. Solche Anweisungen werden als verschachtelte Switch-Case-Anweisungen bezeichnet. Betrachten Sie das folgende Beispiel.
#include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d ',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d ',j); } } printf('Exact value of i is : %d ', i ); printf('Exact value of j is : %d ', j ); return 0; }
Ausgabe
the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20
Vorteile der switch-Anweisung:
Es gibt mehrere Vorteile switch-Anweisung in C. Einige Hauptvorteile der switch-Anweisung sind folgende:
Der switch-Anweisung unterstützt die Verwendung eines Standardfalls, der als dient Catch-All-Option für Werte, die mit keinem der angegebenen Fälle übereinstimmen. Das Standardfall behandelt ungewöhnliche Eingaben oder Umstände, die nicht ausdrücklich angegeben sind.
Nachteile der switch-Anweisung:
Es gibt mehrere Nachteile switch-Anweisung in C. Einige Hauptnachteile der switch-Anweisung sind folgende: