
Wykres porównania
Podstawa do porównania | Jeśli inaczej | przełącznik |
---|---|---|
Podstawowy | To, która instrukcja zostanie wykonana, zależy od wyniku wyrażenia wewnątrz instrukcji if. | O tym, która instrukcja zostanie wykonana, decyduje użytkownik. |
Wyrażenie | Instrukcja if-else używa wielu instrukcji dla wielu wyborów. | Instrukcja switch używa pojedynczego wyrażenia dla wielu wyborów. |
Testowanie | test polecenia else-else dla równości oraz dla wyrażenia logicznego. | test instrukcji switch tylko dla równości. |
Ocena | Instrukcja if oblicza liczbę całkowitą, znak, wskaźnik lub typ zmiennoprzecinkowy lub typ boolowski. | Instrukcja switch oblicza tylko wartość lub liczbę całkowitą. |
Sekwencja wykonania | Albo instrukcja zostanie wykonana, albo instrukcja zostanie wykonana. | instrukcja switch wykonuje jedną sprawę po drugiej, aż pojawi się instrukcja break lub osiągnięty zostanie koniec instrukcji switch. |
Domyślna realizacja | Jeśli warunek wewnątrz instrukcji if jest fałszywy, domyślnie wykonywana jest instrukcja else, jeśli została utworzona. | Jeśli warunek wewnątrz instrukcji switch nie jest zgodny z żadnym z przypadków, dla tej instancji są wykonywane instrukcje domyślne, jeśli zostały utworzone. |
Redagowanie | Trudno jest edytować instrukcję if-else, jeśli używana jest instrukcja zagnieżdżona if-else. | Łatwo jest edytować przełączniki, ponieważ są one łatwo rozpoznawane. |
Definicja if-else
Instrukcje if-else należą do instrukcji wyboru w OOP. Ogólna forma instrukcji if-else jest następująca
if (wyrażenie) {instrukcja (s)} else {instrukcja (s)}
gdzie "if" i "else" są słowami kluczowymi, a instrukcje mogą być pojedynczą instrukcją lub blokiem instrukcji. Wyrażenie jest wartością "prawda" dla dowolnej wartości niezerowej, a dla wartości zerowej oznacza "fałsz".
Wyrażenie w instrukcji if może zawierać liczbę całkowitą, znak, wskaźnik, zmiennoprzecinkowe lub może być typem boolowskim. Instrukcja else jest opcjonalna w instrukcji if-else. Jeśli wyrażenie zwraca wartość true, instrukcje wewnątrz instrukcji if są wykonywane, a jeśli zwrócą wartość false, instrukcje wewnątrz instrukcji else zostaną wykonane, a jeśli instrukcja else nie zostanie utworzona, nie zostanie wykonana żadna akcja, a kontrola programu wyskoczy instrukcji if-else.
Pozwala nam zrozumieć na przykładzie.
int i = 45, j = 34; if (i == 45 & j == 34) {cout << "i jyou wybieram ciemne choclate"; złamać; case 2: cout << "wybierasz cukierki"; złamać; case 3: cout << "wybierasz lollypop"; złamać; . . domyślna cout << "nic nie wybierasz"; }
W tym przypadku wartość "i" decyduje, która sprawa ma zostać wykonana, jeśli użytkownik poda wartość "i" inną niż 1, 2 lub 3, wówczas wykonywany jest domyślny przypadek.
Kluczowe różnice między if-else i switch
- Wyrażenie wewnątrz instrukcji if decyduje o tym, czy wykonać instrukcje wewnątrz bloku, czy pod blokiem else. Z drugiej strony wyrażenie wewnątrz instrukcji switch decyduje o tym, która sprawa ma zostać wykonana.
- Możesz mieć wiele instrukcji if dla wielokrotnego wyboru instrukcji. W przełączniku masz tylko jedno wyrażenie dla wielu opcji.
- Instrukcja if-esle sprawdza równość i wyrażenie logiczne. Z drugiej strony przełączniki sprawdzają tylko dla równości.
- Instrukcja if oblicza liczbę całkowitą, znak, wskaźnik lub typ zmiennoprzecinkowy lub typ boolowski. Z drugiej strony, instrukcja switch oblicza tylko znak lub typ danych integer.
- Kolejność wykonywania jest jak instrukcja pod warunkiem, że zostanie wykonany blok lub gdy instrukcja else zostanie wykonana. Z drugiej strony wyrażenie w instrukcji switch decyduje o tym, która sprawa ma zostać wykonana, a jeśli nie zastosujesz instrukcji break po każdym przypadku, będzie ona wykonywana do końca instrukcji switch.
- Jeśli wyrażenie wewnątrz, jeśli zwroty są fałszywe, instrukcja wewnątrz bloku innego będzie wykonana. Jeśli wyrażenie wewnątrz instrukcji switch okaże się fałszywe, wówczas wykonywane są instrukcje domyślne.
- Trudno jest edytować instrukcje if-else, ponieważ nużące jest śledzenie, gdzie wymagana jest poprawka. Z drugiej strony można łatwo edytować instrukcje przełączników, ponieważ są one łatwe do śledzenia.
Wniosek:
Instrukcja switch jest łatwa do edycji, ponieważ tworzy oddzielne przypadki dla różnych instrukcji, podczas gdy w zagnieżdżonych instrukcjach if-else trudno jest zidentyfikować instrukcje do edycji.