logo

C Switch-Anweisung

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

  1. Der Ausdruck wechseln muss vom Typ Ganzzahl oder Zeichen sein.
  2. Der Fallwert muss eine Ganzzahl oder eine Zeichenkonstante sein.
  3. Der Fallwert kann nur innerhalb der switch-Anweisung verwendet werden.
  4. 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 SchalterUngültiger SchalterGültiger FallUngü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

Ablauf 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:

  1. Der Schaltervariable Num ausgewertet wird. In diesem Fall, Auf eins wird mit dem initialisiert Wert 2 .
  2. Der ausgewerteter num (2) Wert wird mit den jeweils im Label angegebenen Konstanten verglichen Schalterblock .
  3. 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) .
  4. Der mit verknüpfte Codeblock Fall 2 ausgeführt wird, was gedruckt wird „Wert ist 2“ zur Konsole.
  5. 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.
  6. 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.
  7. 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:

    Lesbarkeit und Klarheit:Der switch-Anweisung bietet eine prägnante und unkomplizierte Möglichkeit, sich auszudrücken Mehrwegeverzweigung im Code. Durch den Umgang mit mehreren Fällen kann der Code besser organisiert und leichter lesbar sein als mit mehreren Fällen verschachtelte if-else-Anweisungen .Effizienz:Der switch-Anweisung ist im Allgemeinen effizienter als eine Reihe von if-else-Anweisungen wenn es um mehrere Erkrankungen geht. Es funktioniert als d Direkter Sprungtisch , was es schneller und hinsichtlich der Ausführungszeit optimierter macht.Fallbasierte Logik:Der switch-Anweisung eignet sich natürlich für Szenarien, in denen das Programm Entscheidungen auf der Grundlage spezifischer Werte einer einzelnen Variablen treffen muss. Es ist eine intuitive und unkomplizierte Möglichkeit, fallbasierte Logik zu implementieren.

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:

    Eingeschränkte Ausdrücke:Der in der verwendete Ausdruck switch-Anweisung muss zu einem führen Integralwert (char, int, enum) oder ein kompatibler Datentyp. Mehr kann es nicht verkraften komplexe oder nicht konstante Ausdrücke , Begrenzung seiner Flexibilität in einigen Szenarien.Bereiche können nicht verglichen werden:nicht wie if-else-Anweisungen , Die switch-Anweisung kann Wertebereiche nicht direkt verarbeiten. Jeder Fall in der switch-Anweisung stellt einen bestimmten konstanten Wert dar, wodurch es schwierig ist, einen Wertebereich effizient zu verarbeiten.Keine Unterstützung für Gleitkommazahlen:Der switch-Anweisung akzeptiert nur Integraltypen (Ganzzahlen) und Werte aus Aufzählungen ; Es werden keine Gleitkommazahlen akzeptiert. Es lässt sich nicht verarbeiten nichtintegrale Datentypen wie Gleitkomma-Ganzzahlen , was unter bestimmten Umständen problematisch sein kann.Durchfallverhalten: Switch-Anweisungen haben 'durchfallen' Verhalten standardmäßig, was bedeutet, dass, wenn ein Fall kein a enthält 'break'-Anweisung , Ausführung wird 'durchfallen' zum folgenden Fallblock. Bei unsachgemäßer Handhabung kann dies zu unerwünschtem Verhalten führen.Doppelter Code:Verwendung einer switch-Anweisung kann unter bestimmten Umständen zu doppeltem Code führen, insbesondere wenn in mehreren Fällen dieselben Aktionen erforderlich sind. Bei unsachgemäßer Verwaltung kann dies zu einer Codeduplizierung führen.Verschachtelte Schalter können komplex werden:Beim Umgang mit verschachtelt switch-Anweisungen , kann der Code komplex und weniger lesbar werden. Es kann zusätzlichen Aufwand erfordern, solche verschachtelten Strukturen zu verstehen und aufrechtzuerhalten.