Użycie instrukcji switch umożliwia przetestowanie wielu warunków i wykonanie określonego bloku tylko wtedy, gdy warunek jest prawdziwy. Chociaż działa podobnie do instrukcji if…else if….else, składnia jest prostsza i łatwiejsza do odczytania i zarządzania.
Ten samouczek koncentruje się na pokazaniu, jak tworzyć i pracować z instrukcjami switch w programowaniu w języku C.
Podstawowe użycie
Instrukcja switch jest łatwa do zaimplementowania. Ogólna składnia jest pokazana poniżej:
przełącznik (wyraż) {
casevar1:
// kod
przerwa;
casevar2:
//kod
przerwa;
casevar3:
// kod
przerwa;
casevarN:
// kod
przerwa;
...
….
….
domyślny:
//kod
}
Jak to działa
Instrukcja switch implementuje prostą logikę do oceny każdego z bloków case.
Rozpoczyna się od oceny wyrażenia wewnątrz bloku przełącznika. Następnie porównuje wartość z bloku przełącznika z każdym blokiem przypadku.
Gdy zlokalizuje dopasowanie w jednym ze zdefiniowanych bloków wielkości liter, wykonuje kod wewnątrz tego bloku, dopóki nie napotka słowa kluczowego break.
Jeśli nie napotka dopasowania w żadnym ze zdefiniowanych bloków case, przeskakuje do instrukcji default i wykonuje zawarty w niej kod. Domyślny blok jest opcjonalny i można go pominąć, jeśli nie ma wymaganej akcji w przypadku niedopasowanego scenariusza
NOTATKA: Dobrze jest upewnić się, że każda instrukcja case kończy się instrukcją break, aby uniemożliwić wykonanie wszystkich instrukcji po dopasowanym bloku.
C Przykład instrukcji dotyczącej przypadku przełącznika
Zilustrujmy instrukcję switch na bardzo prostym przykładzie:
#włączaćintmain() {
intgdzie= 5;
przełącznik (gdzie) {
sprawa3:
printf („Wartość 3”);
przerwa;
sprawa4:
printf („Wartość wynosi 4”);
przerwa;
sprawa5:
printf („Wartość to 5”);
przerwa;
domyślny:
printf („Wartość nie wynosi ani 3, 4 ani 5”);
}
powrót0;
}
Jeśli uruchomimy powyższy przykład, powinniśmy otrzymać wynik podobny do tego poniżej:
Wartość to5Poniższy schemat blokowy ilustruje logikę powyższego programu:
Zagnieżdżona instrukcja przełącznika
C pozwala mieć zagnieżdżone instrukcje switch wewnątrz instrukcji switch. Zagnieżdżona instrukcja switch jest powiązana z wartością przełącznika zewnętrznego.
Rozważmy następujący przykład:
#włączaćintmain() {
intdł= 5;
intaccess_code= 2028;
przełącznik (dł) {
przypadek 1:
przełącznik (kod dostępu) {
sprawa2021:
printf ('[+] Ważny kod dostępu!');
przerwa;
domyślny:
printf ('[-] Nieprawidłowy kod dostępu!');
}
przerwa;
domyślny:
printf ('[-] Tylko Dział 1 jest dozwolony!');
}
powrót0;
}
W powyższym przykładzie implementujemy dwie instrukcje switch. Pierwszy sprawdza, czy podany dział to 1. Jeśli prawda, przechodzi do następnego bloku przełączników i sprawdza poprawny kod dostępu.
Jeśli wartość dept nie jest równa jeden, wykonanie przechodzi do bloku domyślnego.
Poniżej znajduje się wykonanie powyższego kodu z poprawnym i nieprawidłowym działem oraz kodem dostępu.
W pierwszym przykładzie zarówno kod oddziału, jak i kod dostępu są poprawne; w ten sposób wykonanie nigdy nie osiąga domyślnych bloków.
W drugim przykładzie zarówno kod oddziału, jak i kod dostępu są nieprawidłowe; stąd wykonanie natychmiast przeskakuje do pierwszego domyślnego bloku.
Wytyczne dotyczące oświadczeń dotyczących przełączników
Poniżej znajdują się krótkie wskazówki, na które warto zwrócić uwagę podczas tworzenia instrukcji switch w języku C.
- Musisz przekazać wyrażenie do słowa kluczowego switch.
- Instrukcje przypadku muszą sprawdzać unikalne wartości
- Zakończ każdy blok przypadku za pomocą słowa kluczowego break.
- Możesz zagnieżdżać wiele instrukcji switch.
- Możesz dołączyć domyślną instrukcję, gdy akcja jest konieczna w przypadku niezgodnych przypadków.
Wniosek
W tym przewodniku przedstawiono podstawy tworzenia i używania instrukcji switch w języku C. Instrukcje Switch są przydatne w przypadku złożonych przypadków decyzji, które mogą być trudne do zaimplementowania za pomocą instrukcji i if else.