c++ continue versus break

筅森魡賤 提交于 2020-01-01 08:13:13

问题


Which statement will be executed after "continue" or "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                                                                                                                                                                                                                           
 }

回答1:


continue: ++j and then if j < count then statement2 otherwise statement3

break: statement3




回答2:


Continue jumps straight to the top of the innermost loop, where the per-iteration code and continuance check will be carried out (sections 3 and 2 of the for loop).

Break jumps straight to immediately after the innermost loop without changing anything.

It may be easier to think of the former jumping to the closing brace of the innermost loop while the latter jumps just beyond it.




回答3:


continue ends the current iteration, virtually it is the same as:

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 exits the loop:

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



回答4:


statement2 will execute after the continue, given that the loop was not in the last iteration.

statement3 will execute after the break.

'continue' (as the name suggests) continues the loop, while skipping the rest of the statements in the current iteration.

'break' breaks and exits from the loop.




回答5:


Continue: It depends. The continue statement will execute the 'increment' part of the for-loop, then the 'test' part, and then decide whether to execute the next iteration or leave the loop. So it could be statement 2 or 3.

Break: statement 3.

Btw, is this homework?




回答6:


  1. For continue, innerloop is executed with new i,j values of i,j+1

  2. For break, innerloop is executed with new i,j values of i+1,0

ofcourse if boundary conditions are satisfied



来源:https://stackoverflow.com/questions/6368141/c-continue-versus-break

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!