Това е многовариантен селектор. Алтернатива на if-else конструкцията. Поведението му е малко по особено и трябва да се научи.
Декларация
switch (израз) {
case стойност1:
// код
break;
case стойност2:
// код
break;
default:
// код, ако няма съвпадение
}Как работи
- израза се изчислява в тялото на switch (трябва да е цяло число, char, или enum);
- сравнява се със всяка case стойност;
- При съвпадение → изпълнява се кода;
- когато се срещне break се спира изпълнението на switch конструкцята и се преминава към следващия код в програмата;
- default се изпълнява само, ако няма съвпадения;
- в тази конструкция continue води до грешка по време на компилация;
- return прекратява изпълнението на функцията;
Моля не забравяте break, иначе става манджа с грозде 🙂
#include <iostream>
using namespace std;
int main() {
int number = 2;
switch (number) {
case 1:
cout << "Едно";
break;
case 2:
cout << "Две";
break;
case 3:
cout << "Три";
break;
default:
cout << "Непознато число";
}
return 0;
}Ако забравите break. То ще се изпълни всичко до последния break или края на блока. Това може да е недефинирано поведение. Или желано поведение от програмиста. Компилатора ви казва „ти решаваш“.
Бъдете внимателни когато пишете на C++. Преглеждайте си кода.
Много варианти
Групиране на случаи. Просто июстрираме поведение.
switch(x) {
case 1: case 2: case 3: {
Action1(x);
break;
}
case 4: case 5: {
Action2(x);
break;
}
default: {}
}При x = 1,2,3 ще се изпълни Action1(x); При x = 4 или 5 Action2(x); Ако нищо не се изпълни. То тогава конструкцията ще извика default.
Няма да ви давам задачи. Просто разберете логиката.