2017-06-23 32 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++中断的行为。