15

在 "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

6 回答 6

24

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

休息:statement3

于 2011-06-16T06:56:36.280 回答
22

Continue 直接跳到最内层循环的顶部,将执行每次迭代代码和连续性检查(for循环的第 3 和 2 部分)。

Break 直接跳到最内层循环之后,不做任何更改。

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

于 2011-06-16T06:56:27.483 回答
11

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                                                                                                                                                                                                                           
 }
于 2011-06-16T06:59:22.787 回答
2

Continue: 这取决于。continue 语句将执行 for 循环的“增量”部分,然后是“测试”部分,然后决定是执行下一次迭代还是离开循环。所以它可能是语句 2 或 3。

Break: 声明3。

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

于 2011-06-16T06:57:35.960 回答
2

鉴于循环不在最后一次迭代中,statement2 将在 continue 之后执行。

statement3 将在 break 之后执行。

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

'break' 中断并退出循环。

于 2011-06-16T06:58:27.680 回答
-1
  1. 对于 continue,innerloop 使用 i,j+1 的新 i,j 值执行

  2. 对于 break,innerloop 以 i+1,0 的新 i,j 值执行

当然,如果满足边界条件

于 2011-06-16T06:59:33.190 回答