加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C:打破主循环

发布时间:2020-12-16 03:13:57 所属栏目:百科 来源:网络整理
导读:我正在准备一些代码: for(int a = 1; a = 100; a++) //loop a (main loop){ for(int b = 1000; b = 2000; b++) //loop b { if(b == 1555) break; } for(int c = 2001; c = 3000; c++) //loop c { . . . }} 我想通过使用break来打破主循环(循环变量int a);语
我正在准备一些代码:
for(int a = 1; a <= 100; a++)    //loop a (main loop)
{
    for(int b = 1000; b <= 2000; b++)    //loop b
    {
       if(b == 1555)
          break;
    }

    for(int c = 2001; c <= 3000; c++)    //loop c
    {
       .
       .
       .
    }
}

我想通过使用break来打破主循环(循环变量int a);语句在b循环(循环变量int b)中.

我该怎么做?

解决方法

我建议将代码重构成一个函数.那么你可以从该函数返回,而不是使用break:
void myFunc() 
{
    for(int a = 1; a <= 100; a++)    //loop a (main loop)
    {
        for(int b = 1000; b <= 2000; b++)    //loop b
        {
           if(b == 1555) // Logic is just an example,return;    // since it will always return
        }

        .
        .
        .
    }
}

这 – 或者甚至是更重要的重构代码 – 应该适用于一个干净,优雅的解决方案.或者,如果您只想快速修复,可以使用条件变量:

for(int a = 1; a <= 100; a++)    //loop a (main loop)
{
    bool cond = false;

    for(int b = 1000; b <= 2000; b++)    //loop b
    {
       if(b == 1555){
          cond = true;
          break;
       }
    }

    if (cond) break;

    .
    .
    .
}

其他人建议使用goto.虽然这是另一个快速解决方案,但我强烈建议您反对,特别是如果您在严格的环境中工作,该代码将经过同行评审并在道路上使用多年.

在我看来,goto方法比函数/返回重构更难维护,特别是当别人更改代码时.此外,您将必须证明goto给球队上任何其他人偶然绊倒代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读