C ++ Multi Switch and Break?

时间:2017-06-23 00:04:41

标签: 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;
}

现在,如果我使用Case 0并转换(anotherthing),并使用break那将会发生什么?完成开关(anotherthing)?或者完成开关(某事)?

其他语言也一样吗?

2 个答案:

答案 0 :(得分:1)

中断只会从最里面的开关中断开。

通过添加一些print语句或换行符,您提供的示例很容易测试此行为。

请参阅this documentation有关C ++休息的行为。

答案 1 :(得分:1)

break语句只会中断调用它的最近的开关/循环。

在您的示例中,内部break的{​​{1}}语句只会突破内部switch,执行将返回到另一个switch case 0 }}。然后,由于switch没有自己的case 0,执行将落到break,而case 1也没有break,因此执行将会失败到case 4breakswitch来结束外Break

无论如何,这在C和C ++中确实如此。不一定用其他语言。例如,Delphi不会在案例块之间出现问题。 case可以用于提前结束import pandas as pd #create dataframe df = pd.DataFrame([['DE', 'Table',201705,201705, 1000], ['DE', 'Table',201705,201704, 1000],\ ['DE', 'Table',201705,201702, 1000], ['DE', 'Table',201705,201701, 1000],\ ['AT', 'Table',201708,201708, 1000], ['AT', 'Table',201708,201706, 1000],\ ['AT', 'Table',201708,201705, 1000], ['AT', 'Table',201708,201704, 1000]],\ columns=['ISO','Product','Billed Week', 'Created Week', 'Billings']) print (df) ISO Product Billed Week Created Week Billings 0 DE Table 201705 201705 1000 1 DE Table 201705 201704 1000 2 DE Table 201705 201702 1000 3 DE Table 201705 201701 1000 4 AT Table 201708 201708 1000 5 AT Table 201708 201706 1000 6 AT Table 201708 201705 1000 7 AT Table 201708 201704 1000 块,但它是可选的,块在达到其范围结束时结束。