2012-11-14 227 views
0

我的代码里面是这样的: -两个for循环和if语句是

for() //outer for 
{ 
    for() //inner for 
    { 
     if() 
     { 
     break; 
     } 
    } 
} 

如果break语句执行下一步操作将是其中的for循环? 我知道这是一个非常抽象的问题,但我真的没有时间写完整的代码。谢谢。

+0

没有像'if-loop'这样的事情,'break'只会影响最近的最内层循环块。 –

回答

4

break只会打破**loop**的内部。 它打破了最接近它的环路。

在您的示例中,如果if条件满足,它将停止inner for循环的迭代并返回(继续)outer for循环。

4

break语句终止直接封闭在它出现doforswitch,或while语句的执行。在这种情况下,这意味着仅破坏内部for

编辑:标准参考:6.6.1 break语句[stmt.break]

1 break语句应仅在迭代语句发生或 switch语句,并导致终止迭代语句或switch语句的最小圈数 ;如果有控制权,控制权转移到 声明之后。

+0

那么它不会突然出现吗? –

+0

@PrakharMohan看到我的评论。这就是说,'范围'这个词在这个答案中并没有被精确地使用。 –

+0

@PrakharMohan - “break语句终止最近的包含do,for,switch或while语句在其中出现的执行” – jn1kk

0

由于break只会离开其封闭范围,因此您需要一种方法来打破外部循环。你用来管理状态的东西可以是任何东西,但是在最简单的形式中,你可以使用一个布尔值来检查它,以及最外层循环中的原始状态。

bool breakLoop = false; 
for(...; ... && !breakLoop; ...) //outer for 
{ 
    for() //inner for 
    { 
     if() 
     { 
     breakLoop = true; 
     break; 
     } 
    } 
} 
+0

真的吗?你的代码示例远不是正确的(尤其是外部的条件) –

+0

我修正了for语句。 – John

+0

@ g-makulik:我不得不快速写出回复,并做出小小的错字,放松。 –

1

如果你喜欢,你可以使用goto来打破外层循环。