C++ Оператор switch
В C++ оператор switch используется для выполнения различных блоков кода в зависимости от разных условий. Его часто используют для замены серии операторов if-else, что делает код более понятным и удобочитаемым.
aswitchОператор позволяет проверять переменную на равенство нескольким значениям. Каждое значение называется case, и проверяемая переменная проверяется по каждомуswitch caseчтобы выполнить проверку.
Синтаксис
В C++switchСинтаксис оператора:
switchОператор должен соответствовать следующим правилам:
- switchв операторевыражениедолжно иметь целочисленный или перечисляемый тип, либо тип класса, имеющего единственную функцию преобразования, преобразующую его в целочисленный или перечисляемый тип.
- Оператор switch может содержать любое количество операторов case. За каждым case следует значение для сравнения и двоеточие.
- Значение caseconstant-expressionдолжно иметь тот же тип данных, что и переменная в switch, и должно быть константой или литералом.
- Когда проверяемая переменная равна константе в case, операторы, следующие за case, будут выполняться до тех пор, пока не будет достигнут операторbreak.
- Когда встречается операторbreak, switch завершается, и поток управления переходит к следующей строке после оператора switch.
- Не каждый case должен включатьbreak. Если оператор case не содержитbreak, поток управленияпродолжитсяпоследующие case, пока не встретится break.
- aswitch-оператор может иметь необязательныйdefaultcase, появляющийся в конце switch. default case можно использовать для выполнения задачи, когда ни один из вышеперечисленных case не истинен. В default casebreak-оператор не требуется.
Блок-схема
Пример
Пример
int main() {
int day = 4;
switch (day) {
case 1:
std::cout << "Monday" << std::endl;
break;
case 2:
std::cout << "Tuesday" << std::endl;
break;
case 3:
std::cout << "Wednesday" << std::endl;
break;
case 4:
std::cout << "Четверг" << std::endl;
break;
case 5:
std::cout << "Пятница" << std::endl;
break;
case 6:
std::cout << "Суббота" << std::endl;
break;
case 7:
std::cout << "Воскресенье" << std::endl;
break;
default:
std::cout << "Неверный день" << std::endl;
}
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Thursday
Тип char в операторах switch:
Пример 2
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
您通过了 您的成绩是 D
Примечания:
breakОператор:каждыйcaseв конце оператораbreakОператор необходим для выхода изswitchоператора. Если он отсутствуетbreak, программа продолжит выполнять следующийcase, это называется "fall-through".defaultОператор:defaultОператор необязателен, но обычно во всехcaseкогда ни один из них не совпадает, он используется для обработки всех неперечисленных случаев.- Тип выражения:
switchВыражение обычно имеет целочисленный тип или тип перечисления; типы с плавающей запятой и строковые типы не подходят.
Иногда мы можем намеренно использовать проваливание. В следующем коде, если number равно 2 или 3, будет выполнен один и тот же блок кода.
Пример
int main() {
int number = 2;
switch (number) {
case 1:
std::cout << "Number is 1" << std::endl;
break;
case 2:
case 3:
std::cout << "Number is 2 or 3" << std::endl;
break;
default:
std::cout << "Number is not 1, 2, or 3" << std::endl;
}
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Number is 2 or 3Другие расширения