带有标志的“继续”作用于哪个循环?

Posted

技术标签:

【中文标题】带有标志的“继续”作用于哪个循环?【英文标题】:Which loop does the 'continue' act on with a flag? 【发布时间】:2016-04-05 08:33:36 【问题描述】:

continue 语句应该作用于内部循环,对吧?还是我错过了什么?

    for (j=0; j< 100; j++)
    
    for (i=0 ; i<10; i++)
    

    bool flag = false;

        //CALL TO A FUNCTION WHICH, BASED ON SOME CONDITION, MODIFIES FLAG AND RETURNS IT TO THIS LOOP

         if(flag)
           
             continue;  //SHOULDN'T IT CONTINUE THE LOOP ON i??????
           

       //CALLS TO SOME OTHER FUNCTIONS WHICH SHOULDN'T BE CALLED IF FLAG IS 1

      
   

【问题讨论】:

是的,我做到了。在我的情况下,它不会迭代到下一个 i 值,它会继续调用低于该条件的其他函数,即使现在标志为 1(我知道,因为我通过打印它进行了检查) 对不起,我在函数中打印了值,它给出了 1,但是在返回值时我想有一些错误,因为在我的 i 循环中,现在当我打印它时,它又是 0。我会看看有什么问题。 我更正了返回的错误,现在它迭代到外部循环而不是内部循环。 您能否粘贴出现问题的最短代码版本? 【参考方案1】:

Continue 将移动到调用它的最近循环的下一次迭代。在您的情况下,它将移至第二个循环的下一次迭代,即值为 i 的那个。

如果遇到 continue 时 i 的值为 9 ,它将进入第二个循环,当 i 的值在递增后变为 10 时,它不满足条件,它将移动到外循环的下一次迭代值 j。

【讨论】:

我不知道为什么在我的代码中它移动到 j 的下一次迭代。你能推荐点什么吗? 能不能在if条件里面加个print语句来确认确实进入了if条件并执行了continue语句。【参考方案2】:

如果内循环计数器(i)在遇到 continue 语句时为 9,则内循环将退出,外循环将在进入内循环之前发生一次迭代,其计数器初始化为 0。

【讨论】:

以上是关于带有标志的“继续”作用于哪个循环?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Qt::CustomizeWindowHint 标志的 QMainWindow 不起作用 aero snap

作用域与带有循环变量的默认参数相比较问题

python学习:continue及break使用

JAVA数硬币之穷举法以及在循环前可以放一个标号来标志循环

带有innerHtml循环的Javascript幻灯片不起作用

msgrcv - SA_RESTART 标志不起作用