2017-06-23 31 views
-7

可以說我有這樣的C++多切換和中斷?

switch (something) 
    { 
     case 0: 
      switch (anotherthing) 
      { 
      case 0: 
       break; 
      case 1: 
       break; 
      default: 
       break; 
      } 

    case 1: 
    case 4: 
     break; 
    case 2: 
    case 3: 
     break; 
    default: 
     break; 
} 

一個代碼現在,如果我使用案例0和轉到開關(anotherthing),並利用突破會有什麼後果?完成切換(anotherthing)?或完成開關(東西)呢?

這與其他語言一樣嗎?

+4

你可以在2分鐘內測試這個... – John3136

+1

'break'從**當前**循環/開關中斷。 – Ripi2

+0

編譯並運行此代碼將給出比我們更可靠的答案。而且時間更少。只需添加一些cout語句。 –

回答

1

一個break語句只打破了最近的開關/循環,它是要求收回。

在你的榜樣,內switch只會打出來的內switchbreak語句,執行會返回到case 0其他switch。然後,因爲這case 0沒有它自己的break,執行將始終陷入case 1,也沒有一個break,所以執行將通過降至case 4,它確實有一個break結束外switch

無論如何,這在C和C++中肯定是正確的。不一定用其他語言。例如,德爾福不會在大小寫塊之間翻轉。 Break可以用於儘早結束case塊,但它是可選的,該塊在達到其作用域結束時結束。

1

休息只會突破最內層的開關。

您提供的示例很容易通過添加一些print語句或換行符來測試此行爲。

請參閱this documentation關於C++中斷的行爲。