Instrukcja switch w języku C jest alternatywą dla instrukcji drabinkowej if-else-if, która pozwala nam wykonywać wiele operacji dla różnych możliwych wartości pojedynczej zmiennej zwanej zmienną przełączającą. Tutaj możemy zdefiniować różne stwierdzenia w wielu przypadkach dla różnych wartości pojedynczej zmiennej.
Składnia instrukcji switch w język c podano poniżej:
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; }
Reguły instrukcji switch w języku C
- The przełącz wyrażenie musi być typu całkowitego lub znakowego.
- The wartość przypadku musi być liczbą całkowitą lub stałą znakową.
- The wartość przypadku można używać tylko wewnątrz instrukcji switch.
- The oświadczenie o złamaniu w przypadku przełącznika nie jest konieczne. Jest to opcjonalne. Jeśli w przypadku nie zostanie znaleziona instrukcja break, wszystkie przypadki zostaną wykonane po dopasowanym przypadku. Jest znany jako nie dojść do skutku stan instrukcji switch C.
Spróbujmy to zrozumieć na przykładach. Zakładamy, że istnieją następujące zmienne.
int x,y,z; char a,b; float f;
Prawidłowy przełącznik | Nieprawidłowy przełącznik | Ważna sprawa | Nieprawidłowy przypadek |
---|---|---|---|
przełącznik(x) | przełącznik(f) | przypadek 3; | przypadek 2.5; |
przełącznik (x>y) | przełącznik (x+2,5) | przypadek „a”; | przypadek x; |
przełącznik (a+b-2) | przypadek 1+2; | przypadek x+2; | |
przełącznik(funkcja(x,y)) | przypadek 'x'>'y'; | przypadek 1,2,3; |
Schemat blokowy instrukcji switch w C
Działanie instrukcji switch case
Najpierw oceniane jest wyrażenie całkowite określone w instrukcji switch. Wartość ta jest następnie porównywana ze stałymi wartościami podanymi w różnych przypadkach. Jeśli zostanie znalezione dopasowanie, zostaną wykonane wszystkie instrukcje określone w tym przypadku wraz ze wszystkimi przypadkami występującymi po tym przypadku, w tym instrukcją domyślną. Żadne dwa przypadki nie mogą mieć podobnych wartości. Jeśli dopasowany przypadek zawiera instrukcję break, wówczas wszystkie kolejne przypadki zostaną pominięte, a sterowanie wyjdzie z przełącznika. W przeciwnym razie wykonane zostaną wszystkie sprawy następujące po dopasowanej sprawie.
Jak działa instrukcja switch C?
Przyjrzyjmy się krok po kroku działaniu instrukcji switch w C:
Rozważ następujące instrukcja switch :
Program C:
#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; }
Wyjście
Value is 2
Proces krok po kroku:
- The przełącz zmienną nr jest oceniany. W tym przypadku, na jednego jest inicjowany za pomocą wartość 2 .
- The oceniona wartość liczbowa (2). jest porównywany ze stałymi określonymi w każdej etykiecie przypadku wewnątrz blok przełączników .
- The instrukcja switch pasuje do wartość szacunkowa (2) ze stałą określoną w drugi przypadek (przypadek 2) . Ponieważ istnieje dopasowanie, program przeskakuje do bloku kodu powiązanego z pasujący przypadek (przypadek 2) .
- Blok kodu powiązany z przypadek 2 jest wykonywany, co powoduje wydruk „Wartość wynosi 2” do konsoli.
- The 'przerwa' słowo kluczowe jest obecne w bloku kodu przypadek 2 . W rezultacie program przerywa instrukcję switch natychmiast po wykonaniu bloku kodu.
- Sterowanie programem jest kontynuowane po instrukcja switch oraz wszelkie stwierdzenia następujące po instrukcja switch są wykonywane. W tym przypadku po przełączeniu nie ma żadnych instrukcji, więc program kończy działanie.
- The instrukcja switch ocenił wartość zmienna liczba , znalazł dopasowanie do przypadku 2, wykonał odpowiedni blok kodu, a następnie opuścił blok przełączników ze względu na obecność oświadczenie „przerwa”. .
Przykład instrukcji switch w C
Zobaczmy prosty przykład instrukcji switch w języku C.
#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; }
Wyjście
pętla for w bashu
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Przykład obudowy przełącznika 2
#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 '); } }
Wyjście
hi
Słowo kluczowe Break i Default w instrukcji Switch
Wyjaśnijmy i zdefiniujmy 'przerwa' I „domyślne” słowa kluczowe w kontekście instrukcji switch, wraz z przykładowym kodem i danymi wyjściowymi.
1. Podziel słowo kluczowe:
The słowo kluczowe „przerwa”. jest używany w bloku kodu w każdym przypadku do przedwczesnego zakończenia instrukcji switch. Kiedy program napotka a oświadczenie „przerwa”. wewnątrz bloku spraw, natychmiast wychodzi z instrukcja switch , uniemożliwiając wykonanie kolejnych bloków spraw. The oświadczenie „przerwa”. ma kluczowe znaczenie dla uniknięcia instrukcji switch' „przepaść” zachowanie.
Przykład:
Weźmy program, który zrozumie użycie przerwać słowo kluczowe w 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; }
Wyjście
Value is 3
Wyjaśnienie:
W tym przykładzie instrukcja switch ocenia wartość zmienna liczba (który jest 3 ) i pasuje do niego przypadek 3 . Blok kodu powiązany z przypadek 3 jest wykonywany, drukowanie „Wartość wynosi 3” do konsoli. The oświadczenie „przerwa”. w przypadek 3 zapewnia, że program zakończy instrukcję switch natychmiast po wykonaniu tego bloku case, uniemożliwiając wykonanie jakichkolwiek innych przypadków.
2. Domyślne słowo kluczowe:
Kiedy żaden z stałe przypadku dopasować oceniane wyrażenie , działa jako sprawa typu catch-all . Jeśli nie istnieje żaden pasujący przypadek i a istnieje „domyślny” przypadek , blok kodu powiązany z 'domyślny' sprawa jest prowadzona. Jest często używany do obsługi sytuacji, w których żadna z podanych sytuacji nie ma zastosowania do podanych danych wejściowych.
Przykład:
Weźmy program, który zrozumie użycie domyślne słowo kluczowe w 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; }
Wyjście
Value is not 1, 2, or 3
Wyjaśnienie:
W tym przykładzie instrukcja switch bada wartość zmienna liczba (który jest 5 ). Ponieważ żadna wielkość liter nie pasuje do liczby, program wykonuje blok kodu powiązany z przypadek „domyślny”. . The oświadczenie „przerwa”. w środku przypadek „domyślny”. zapewnia, że program zakończy działanie instrukcja switch po wykonaniu 'domyślny' blok spraw.
Oboje 'przerwa' I „domyślne” słowa kluczowe odgrywają zasadniczą rolę w kontrolowaniu przepływu wykonywania w instrukcji switch. The oświadczenie „przerwa”. pomaga zapobiegać wypadaniu, podczas gdy przypadek „domyślny”. zapewnia sposób obsługi niedopasowanych przypadków.
Instrukcja C Switch jest przejściowa
W języku C instrukcja switch nie działa; oznacza to, że jeśli nie użyjesz instrukcji break w przypadku switch, zostaną wykonane wszystkie przypadki następujące po pasującym przypadku.
Spróbujmy zrozumieć przechodzenie przez stan instrukcji switch na przykładzie podanym poniżej.
#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; }
Wyjście
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
Wyjście
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Instrukcja przypadku zagnieżdżonego przełącznika
Wewnątrz instrukcji switch możemy użyć dowolnej liczby instrukcji switch. Instrukcje tego typu nazywane są instrukcjami zagnieżdżonych przełączników. Rozważ następujący przykład.
#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; }
Wyjście
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
Zalety instrukcji switch:
Istnieje kilka zalet instrukcja switch w C. Niektóre główne zalety instrukcji switch są następujące:
The instrukcja switch obsługuje użycie domyślnego przypadku, który służy jako opcja catch-all dla wartości, które nie pasują do żadnego podanego przypadku. Ten domyślny przypadek radzi sobie z nietypowymi danymi wejściowymi lub okolicznościami, które nie są wyraźnie określone.
Wady instrukcji switch:
Istnieje kilka wad instrukcja switch w C. Niektóre główne wady instrukcji switch są następujące: