怎样跳出多层循环,而不使用goto?

ZhengZhiRen 2009-06-15 02:23:47
for(;;)
for(;;)
for(;;)
{
process;
if(condition)
goto next;
}
next:


程序中是否应该避免使用goto,有没有不用goto的好办法?
有的设置一个标志变量,如果为true,则break。感觉这样还不如用goto清晰。
...全文
407 64 打赏 收藏 转发到动态 举报
写回复
用AI写文章
64 条回复
切换为时间正序
请发表友善的回复…
发表回复
solo_song 2011-08-24
  • 打赏
  • 举报
回复
如果是while循环
可以将最外层的for循环改成do{...}while(flag)循环,当然这样做不所是彻底跳出,得等到回到最外层循环。
如果是for循环,
这个有个简单彻底的方法,每一层循环都有一个循环计数变量,当达到目的后,直接将所有计数变量(i,j,i1,i2,i3...in)统统改超出临界值,再在当前循环层来个break。这样就完全搞定了,而且,这种方法对于跳出指定层数同样适用
alibabamt1 2009-06-16
  • 打赏
  • 举报
回复
此贴 return ;
}
tkminigame 2009-06-16
  • 打赏
  • 举报
回复
跳出圈子,重新审视自己的思路,看是不是非要用到多重循环。
draculamx 2009-06-16
  • 打赏
  • 举报
回复
楼主迂腐了。。。。
灵活点。。
mstlq 2009-06-16
  • 打赏
  • 举报
回复
这种情况还是用goto最好^_^

如果想找东西代替,不妨用抛异常的方式吧^_^
coldiceangel 2009-06-16
  • 打赏
  • 举报
回复
用子函数跳出多重循环是怎么实现的?
findcsdn 2009-06-16
  • 打赏
  • 举报
回复

呵呵, 汇编里全是goto
yxq281426250 2009-06-16
  • 打赏
  • 举报
回复
这种情况,goto应该是不错的选择吧,别滥用就行了。后者将这部分代码封装成函数直接用return返回。
FreeMyself 2009-06-16
  • 打赏
  • 举报
回复
try
for(;;){
for(;;){
if(true){
throw jump(2);
}
for(;;){
if(true){
throw jump(3);
}
}
}
}
}catch(jump& t){
//op();
}
这样如何呢?根据异常信息可以获得是从哪个循环跳出的
SimonYeung 2009-06-16
  • 打赏
  • 举报
回复
flexible
eTouX 2009-06-16
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
MFCJCK 2009-06-16
  • 打赏
  • 举报
回复
RETURN 或用 一变量监视
lunarfan 2009-06-16
  • 打赏
  • 举报
回复
for(;&条件;)
for(;&条件;)
for(;;)
break;
emailtome 2009-06-16
  • 打赏
  • 举报
回复
其实 if 比 goto 讨厌多了 如果 一个函数写 200 个 if 估计能把你看晕
yangch_nhcmo 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 mymtom 的回复:]
该goto的时候就goto
[/Quote]

同意
ArcueidBrunestud 2009-06-15
  • 打赏
  • 举报
回复
-_-!发现已经有相似的了....
ArcueidBrunestud 2009-06-15
  • 打赏
  • 举报
回复
瞎写几行:

jmp_buf jmpbuf;

if (setjmp(jmpbuf) == 0)
{
for (;;)
{
printf("1\n");
for (;;)
{
printf("2\n");
for (;;)
{
printf("3\n");
for (;;)
{
printf("4\n");
longjmp(jmpbuf, 1);
}
}
}
}
}
threeleafzerg007 2009-06-15
  • 打赏
  • 举报
回复
goto

最合适。。。 当然 几乎只有这种情况 用用goto 其他一概不建议使用它
信念 2009-06-15
  • 打赏
  • 举报
回复
多层循环还是GOTO好了
shenjigong19801109 2009-06-15
  • 打赏
  • 举报
回复
return 可以直接结束。要么就是楼上一些同志所说的,每层break
加载更多回复(44)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧