在循环中中断

时间:2012-08-31 14:05:52

标签: c loops nested-loops

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

假设以下代码:

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

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

4 个答案:

答案 0 :(得分:7)

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

  

6.8.6.3

     

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


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

答案 1 :(得分: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
}

答案 2 :(得分:0)

Break将终止包含中断的最近/最内层循环。在你的例子中,break将终止do-while,并且控制跳转回到for()循环,并简单地启动for()的下一次迭代。

但是,由于你在do()和for()循环中修改x,执行会有点不稳定。一旦外部X达到5,你就会产生一个无限循环。

答案 3 :(得分:0)

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