1、break只能跳出单层循环或者switch语句。
如果是循环内部有一个switch,switch内部用break也只跳出swith,循环继续进行。
连用break是没有用的,因为有一个break后,他后面的句子都没有用处。
综上,break只能用于单层跳出。
2、跳出深度循环
(1)用goto
这是唯一可以用goto的场合,没办法,名声太差了。
for()
{
for()
{
for()
{
for()
{
if()
{
goto mark; //分号
}
}
}
}
}
mark: //冒号
//循环结束后马上打标签,否则可能出现许多意想不到的问题
(2)用flag标记
bool flag=true;
while(flag&& )
{
while(flag&& )
{
while(flag&& )
{
while(flag&& )
{
if()
{
flag=false;
}
}
}
}
}
另,用for()实现也是相同的,for(初始化;判出条件;变量改变) 并不妨碍判处条件有一个&&
bool flag=true;
for( ; &&flag; )
{
for( ; &&flag; )
{
for( ; &&flag; )
{
for( ; &&flag; )
{
if()
{
flag=false;
}
}
}
}
}
综上,因为goto脸太黑了,所以即使像深度跳出这样好用的时候,还是会有人吐槽的。笔者就是这么一个,个人倾向于忘掉goto吧。