12

打破嵌套循环会发生什么?

假设以下代码:

for(int x = 0; x < 10; x++)
{
    do {
        if(x == 4)
            break;
        x++;
    } while(x != 1);
}

遇到 break 语句、for 循环或 do while 循环时哪个循环会退出?

4

4 回答 4

10

总是打破最里面的break循环。

6.8.6.3

break 语句终止执行最小的封闭 switch 或迭代语句。


如果您想跳出两个循环,请在之后使用标签for并使用goto 跳转

于 2012-08-31T14:06:56.310 回答
4

或者,如果您不想使用,可以使用标志goto

int flag = 0;

for(int x = 0; x < 10; x++)
{
    do {
        if(x == 4) {
            flag = 1;
            break;
        }
        x++;
    } while(x != 1);

if(flag) 
   break; // To break the for loop
}
于 2012-08-31T14:16:31.997 回答
1

Break 将杀死最近/最里面的包含中断的循环。在您的示例中,break 将终止 do-while,并且控制跳回到 for() 循环,并简单地启动 for() 的下一次迭代。

但是,由于您在 do() 和 for() 循环中都修改了 x,因此执行会有些不稳定。一旦外部 X 达到 5,您将产生一个无限循环。

于 2012-08-31T14:08:16.153 回答
1

while 将中断,for 循环将继续运行。

于 2012-08-31T14:09:12.443 回答