对两个案例标签使用相同的值与对单个案例使用多个案例标签有什么区别?

Bal*_*sök 2 c++ case switch-statement

我正在阅读Bjarne的《使用C ++的编程和原理》

我遇到了有关switch的以下详细信息:

您可以为一个案例使用多个案例标签。

两个案例标签不能使用相同的值。

我想我很清楚2.一个。它应该意味着:

switch (a) {

  case 'c':{//some code} 

  case 'c':{//some (different) code} 
} 
Run Code Online (Sandbox Code Playgroud)

合法的。

但是,我不确定第一个是否意味着,如果案例1和案例2等不同,那么我可以有任意数量的案例(当然,它们是常量表达式)还是意味着我可以有任意多个案例,但是其中一些案例是相同的

我发现了与此类似的问题: C开关情况下的多个标签值

我的解释正确吗?如果不是,我想念或弄错了什么?

Mik*_*ike 5

This is allowed:

switch ( expression )
{
    case 1:
    case 2: 
    case 3:
          //some code
          break;
    //...
}
Run Code Online (Sandbox Code Playgroud)

And this is NOT allowed:

switch ( expression )
{
    case 1:
          //some code
          break;
    case 1:
          //some other code
          break;
    //...
}
Run Code Online (Sandbox Code Playgroud)