学习笔记——深度循环的跳出

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吧。

      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值