c ++继续与休息

eug*_*ene 13 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                                                                                                                                                                                                                           
 }
Run Code Online (Sandbox Code Playgroud)

Pet*_*nov 22

继续:++j然后如果j < countstatement2不然statement3

打破: statement3


jpm*_*jpm 20

继续直接跳到最里面的循环的顶部,在那里将执行每次迭代代码和连续性检查(for循环的第3和第2部分).

在最内层循环之后立即跳转直接跳转而不改变任何东西.

可能更容易想到前者跳到最里面的环的闭合支撑,而后者跳过它.


小智 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                                                                                                                                                                                                                           
 }
Run Code Online (Sandbox Code Playgroud)

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                                                                                                                                                                                                                           
 }
Run Code Online (Sandbox Code Playgroud)

  • +1一个可能很容易理解的解释方法,但是如果测试后循环中有一些代码会更清楚(我知道 - 不是你的错,只是问题的方式). (3认同)