2011-06-16 74 views
13

哪些语句会在“continue”或“break”之后执行?C++ continue与break

for(int i = 0; i < count; ++i) 
{ 
    // statement1                                                       
    for(int j = 0; j < count; ++j) 
    { 
     //statement2                                                      
     if(someTest) 
      continue; 
    } 
    //statement3                                                       
} 

for(int i = 0; i < count; ++i) 
{ 
    // statement1                                                       
    for(int j = 0; j < count; ++j) 
    { 
     //statement2                                                      
     if(someTest) 
      break; 
    } 
    //statement3                                                       
} 
+4

你不能弄清楚通过简单的调试/跟踪? – 2011-06-16 07:02:25

+1

很容易检查。你有任何编译器? – 2011-06-16 07:03:29

+3

嗯,这是正确的..有时,抓概念比测试更好 – eugene 2011-06-16 07:15:02

回答

21

继续:++j然后如果j < count然后statement2否则statement3

突破:statement3

+0

对于第一种情况:不完全在++ j之后,将执行循环测试(j subhacom 2011-06-16 07:00:58

+0

是的,我纠正了它 – 2011-06-16 07:02:10

+0

+1简洁,正确,易于理解 – 2011-06-16 07:24:10

20

继续跳跃直最内层循环的顶部,其中每个迭代码和持续检查将被执行(部分3和for环的2)。

在没有改变任何内容的情况下,跳至内部循环后立即跳转。

可能会更容易想到前者跳到最内层循环的闭合大括号,而后者跳到它的最外层。

+0

对不起,但-1实际上没有回答这个问题,因为“继续跳跃......递增计数器”,但是这并没有描述下一步 - 重新测试条件,并且确定语句2或3执行,看起来似乎太明显了,但是当出现关于中断的问题并继续时,这些事情不能被认为是理所当然的: - /。 – 2011-06-16 07:14:17

+1

够公平的,我们活着,我们学习。 – jpm 2011-06-16 07:15:34

+0

@paxdiablo感谢您的编辑,它增加了一些清晰度 – jpm 2011-06-16 10:25:41

2

Continue:这要看。 continue语句将执行for循环的'increment'部分,然后执行'test'部分,然后决定是执行下一次迭代还是离开循环。 所以它可能是陈述2或3

Break:声明3.

顺便说一句,这是家庭作业吗?

+0

不,真正的问题 – eugene 2011-06-16 06:59:00

2

如果循环不在最后一次迭代中,statement2将在继续之后执行。

statement3将在休息之后执行。

'continue'(顾名思义)继续循环,同时跳过当前迭代中的其余语句。

'break'断开并退出循环。

10

continue结束当前迭代中,实际上它是一样的:

for(int i = 0; i < count; ++i) 
{ 
    // statement1                                                       
    for(int j = 0; j < count; ++j) 
    { 
     //statement2                                                      
     if(someTest) 
      goto end_of_loop; 
end_of_loop: 
    } 
    //statement3                                                       
} 

break退出循环:

for(int i = 0; i < count; ++i) 
{ 
    // statement1                                                       
    for(int j = 0; j < count; ++j) 
    { 
     //statement2                                                      
     if(someTest) 
      goto after_loop; 
    } 
after_loop: 
    //statement3                                                       
} 
+3

+1一个可能容易遵循的解释方法,但本来可以如果在测试后循环中有一些代码(我知道 - 不是你的错,就是问题的方式),甚至更清楚。 – 2011-06-16 07:23:51

-1
  1. 对于继续,innerloop与新I,J执行i,j + 1的值

  2. 对于中断,innerloop执行d与我的新I,J值+ 1,0

ofcourse如果边界条件得到满足