Конструкция switch ... case - конструкция выбора. Она позволяет задать условие выбора оператором switch, и описать варианты оператором case. Данную конструкцию удобно использовать, если нужно сравнить одну переменную с несколькими значениями типа int или char.
Синтаксис:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
switch ( <переменная> ) { case значение1: Код, который выполняется, если <переменная> равна значение1 break; case значение2: Код, который выполняется, если <переменная> равна значение2 break; ... default: Код, который выполняется, если ни один вариант не подошел break; } |
Рассмотрим задачу: дана переменная а, если ее значение кратно 2, переменная b примет значение, равное 20; иначе b примет значение, равное 3. Пример решения:
1 2 3 4 5 6 7 8 9 10 11 |
// Объявляем переменные и присваиваем переменной а значение 28. int а = 28, b; // Задается условие выбора (проверяем остаток от деления переменной а на 2). switch (a % 2) { // Если остаток равен нулю (число чётное), переменной b присваиваем значение 20. case 0: b = 20; break; // Если остаток от деления равен единице, переменная b принимает значение 3. case 1: b = 3; break; } |
Из данного примера видно, что результатом выполнения работы будет являться значение переменной b, равное 20.
Рассмотрим другие операторы, которые могут использоваться в конструкции switch ... case:
- Оператор break - заставляет программу выйти из конструкции switch ... case. Если же он не указан, то все case'ы будут выполняться либо пока не встретят break, либо до конца конструкции switch.
- Метка default - выполняется по умолчанию, если полученный результат не прописан в метках case.
Изменим наш пример, добавив метку default:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Объявляем две переменные, переменной а присваиваем значение 18. int a = 18, b; // Теперь же мы проверяем остаток от деления на 4. switch (a % 4) { // Если остаток равен нулю, переменная b принимает значение 20. case 0: b = 20; break; // Если остаток равен 1, переменная b будет равна 3. case 1: b = 3; break; // Если остаток принимает любое другое значение, переменной b будет присвоено значение 999. default: b = 999; } |
При выполнении этого кода мы получим значение b равное 999, так как остаток от деления 18 на 4 равен 2.
Можно сделать любое количество case внутри switch. После каждого case следует значение величины, которая сравнивается, и двоеточие.