我的代码里面是这样的: -两个for循环和if语句是
for() //outer for
{
for() //inner for
{
if()
{
break;
}
}
}
如果break语句执行下一步操作将是其中的for循环? 我知道这是一个非常抽象的问题,但我真的没有时间写完整的代码。谢谢。
我的代码里面是这样的: -两个for循环和if语句是
for() //outer for
{
for() //inner for
{
if()
{
break;
}
}
}
如果break语句执行下一步操作将是其中的for循环? 我知道这是一个非常抽象的问题,但我真的没有时间写完整的代码。谢谢。
break
只会打破**loop**
的内部。 它打破了最接近它的环路。
在您的示例中,如果if
条件满足,它将停止inner for循环的迭代并返回(继续)outer for循环。
的break
语句终止直接封闭在它出现do
,for
,switch
,或while
语句的执行。在这种情况下,这意味着仅破坏内部for
。
编辑:标准参考:6.6.1 break语句[stmt.break]
1 break语句应仅在迭代语句发生或 switch语句,并导致终止迭代语句或switch语句的最小圈数 ;如果有控制权,控制权转移到 声明之后。
那么它不会突然出现吗? –
@PrakharMohan看到我的评论。这就是说,'范围'这个词在这个答案中并没有被精确地使用。 –
@PrakharMohan - “break语句终止最近的包含do,for,switch或while语句在其中出现的执行” – jn1kk
由于break
只会离开其封闭范围,因此您需要一种方法来打破外部循环。你用来管理状态的东西可以是任何东西,但是在最简单的形式中,你可以使用一个布尔值来检查它,以及最外层循环中的原始状态。
bool breakLoop = false;
for(...; ... && !breakLoop; ...) //outer for
{
for() //inner for
{
if()
{
breakLoop = true;
break;
}
}
}
如果你喜欢,你可以使用goto来打破外层循环。
没有像'if-loop'这样的事情,'break'只会影响最近的最内层循环块。 –