|
|||
Конструкция switchКонструкция switch
Другую форму организации ветвления программ представляет конструкция switch...case. Она имеет следующую форму:
switch(выражение) { case константа_1: инструкции_1; case константа_2: инструкции_2;
default: инструкции; } После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase. В конце конструкции switch может стоять блок default. Он необязателен и выполняется в том случае, если значение после switch не соответствует ни одному из операторов case. Например:
#include <iostream> using namespace std; int main() { int x = 2; switch(x) { case 1: cout << "x = 1" << "\n"; break; case 2: cout << "x = 2" << "\n"; break; case 3: cout << "x = 3" << "\n"; break; default: cout << "x is undefined" << "\n"; break; } return 0; }
Чтобы избежать выполнения последующих блоков case/default, в конце каждого блока ставится оператор break. То есть в данном случае будет выполняться оператор
case 2: cout << "x = 2" << "\n"; break;
После выполнения оператора break произойдет выход из конструкции switch..case, и остальные операторы case будут проигнорированы. Поэтому на консоль будет выведена следующая строка
Стоит отметить важность использования оператора break. Если мы его не укажем в блоке case, то после этого блока выполнение перейдет к следующему блоку case. Например, уберем из предыдущего примера все операторы break:
#include <iostream> using namespace std; int main() { int x = 2;
switch(x) { case 1: cout << "x = 1" << "\n"; case 2: cout << "x = 2" << "\n"; case 3: cout << "x = 3" << "\n"; default: cout << "x is undefined" << "\n"; } return 0; }
В этом случае опять же будет выполняться оператор case 2:, так как переменная x=2. Однако так как этот блок case не завершается оператором break, то после его завершения будет выполняться набор инструкций после case 3: даже несмотря на то, что переменная x по прежнему равна 2. В итоге мы получим следующий консольный вывод:
|
|||
|