2011-06-16 58 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如果邊界條件得到滿足