Switch – case

Това е многовариантен селектор. Алтернатива на 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.

Няма да ви давам задачи. Просто разберете логиката.