Я пытаюсь выйти из цикла while в инструкции switch, но он не работает. Я получаю бесконечный цикл. Зачем?
int main()
{
int n;
while (std::cin >> n)
{
switch (n)
{
case 4:
break;
break;
default:
std::cout << "Incorrect";
break;
}
}
}
Вы получаете бесконечный цикл, потому что это не так, как работает break
. Как только первый break
выполняется, вы выходите из оператора switch
а второй break
никогда не выполняется. Вам нужно будет найти другой способ выхода из внешней структуры управления. Например, установите флаг в инструкции switch
, а затем отметьте этот флаг в конце или в условии цикла.
while (std::cin >> n)
{
bool should_continue = true;
switch (n)
{
case 4:
should_continue = false;
break;
default:
std::cout << "Incorrect";
break;
}
if (!should_continue)
break;
}
break
в switch
прерывает переключатель. Сделайте что-нибудь вроде:
while (std::cin >> n)
{
if(n == 4)
break;
switch (n)
{
//...Other case labels
default:
std::cout << "Incorrect";
break;
}
}