我试图在switch语句中从while循环中断,但它不起作用。我得到一个无限循环。为什么呢?
int main()
{
int n;
while (std::cin >> n)
{
switch (n)
{
case 4:
break;
break;
default:
std::cout << "Incorrect";
break;
}
}
}
答案 0 :(得分:4)
你得到一个无限循环因为那不是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;
}
答案 1 :(得分:1)
break
内的 switch
打破了转换。做类似的事情:
while (std::cin >> n)
{
if(n == 4)
break;
switch (n)
{
//...Other case labels
default:
std::cout << "Incorrect";
break;
}
}