logo

C Instrukcja przełączania

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

  1. The przełącz wyrażenie musi być typu całkowitego lub znakowego.
  2. The wartość przypadku musi być liczbą całkowitą lub stałą znakową.
  3. The wartość przypadku można używać tylko wewnątrz instrukcji switch.
  4. 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łącznikNieprawidłowy przełącznikWażna sprawaNieprawidł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

przepływ 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:

  1. The przełącz zmienną nr jest oceniany. W tym przypadku, na jednego jest inicjowany za pomocą wartość 2 .
  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 .
  3. 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) .
  4. Blok kodu powiązany z przypadek 2 jest wykonywany, co powoduje wydruk „Wartość wynosi 2” do konsoli.
  5. The 'przerwa' słowo kluczowe jest obecne w bloku kodu przypadek 2 . W rezultacie program przerywa instrukcję switch natychmiast po wykonaniu bloku kodu.
  6. 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.
  7. 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:

    Czytelność i przejrzystość:The instrukcja switch zapewnia zwięzły i prosty sposób wyrażania rozgałęzienia wielokierunkowe w kodzie. Radzenie sobie z wieloma przypadkami może sprawić, że kod będzie bardziej zorganizowany i łatwiejszy do odczytania niż wiele przypadków zagnieżdżone instrukcje if-else .Efektywność:The instrukcja switch jest na ogół bardziej wydajny niż seria instrukcje if-else gdy mamy do czynienia z wieloma warunkami. Działa jako d bezpośredni stół do skoków , co czyni go szybszym i bardziej zoptymalizowanym pod względem czasu wykonania.Logika oparta na przypadkach:The instrukcja switch naturalnie pasuje do scenariuszy, w których program musi podejmować decyzje w oparciu o określone wartości pojedynczej zmiennej. Jest to intuicyjny i prosty sposób wdrożenia logiki opartej na przypadkach.

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:

    Ograniczone wyrażenia:Wyrażenie użyte w instrukcja switch musi skutkować wartość całkowita (char, int, enum) lub zgodny typ danych. Więcej nie jest w stanie znieść wyrażenia złożone lub niestałe , ograniczając go elastyczność w niektórych scenariuszach.Brak możliwości porównania zakresów:w odróżnieniu instrukcje if-else , instrukcja switch nie może bezpośrednio obsługiwać zakresów wartości. Każdy przypadek w instrukcji switch reprezentuje określoną stałą wartość, co utrudnia efektywną obsługę zakresu wartości.Brak obsługi liczb zmiennoprzecinkowych:The instrukcja switch tylko akceptuje typy całkowite (liczby całkowite) i wartości z wyliczenia ; nie akceptuje liczb zmiennoprzecinkowych. Nie radzi sobie nieintegralne typy danych tak jak liczby całkowite zmiennoprzecinkowe , co w niektórych okolicznościach może być problematyczne.Zachowanie w przypadku upadku: Przełącz instrukcje Posiadać „przepaść” zachowanie domyślne, co oznacza, że ​​jeśli sprawa nie zawiera a oświadczenie „przerwa”. , wykonanie będzie 'nie dojść do skutku' do następnego bloku spraw. Jeśli nie będzie to odpowiednio zarządzane, może to skutkować niepożądanym zachowaniem.Zduplikowany kod:Używać instrukcja switch może w niektórych okolicznościach spowodować zduplikowanie kodu, zwłaszcza gdy wiele przypadków wymaga tych samych działań. Jeśli nie będzie to odpowiednio zarządzane, może to spowodować zduplikowanie kodu.Przełączniki zagnieżdżone mogą stać się złożone:Kiedy mamy do czynienia z zagnieżdżone instrukcje przełączania , kod może stać się złożony i mniej czytelny. Zrozumienie i utrzymanie takich zagnieżdżonych struktur może wymagać dodatkowego wysiłku.