如果enum值是> const C里面的C ++枚举的switch语句?

时间:2013-03-05 14:30:26

标签: c++ switch-statement

具有:

switch(val){
    case 1:
    break;
    case 2:
    break;
}

是否可以为case val > N:添加const long long N = 100;

3 个答案:

答案 0 :(得分:3)

是的,但不是转换的一部分,请执行此操作:

if ( val > N)
{
   // whatever
} else {
  switch(val){
    case 1:
    break;
    case 2:
    break;
  }
}

case只能是单个常量值。它是这样的原因是因为C的switch语句应该可以作为跳转表来实现。更高级别的语言经常允许更复杂的比较,使其成为一系列if () {} else if () {}语句的有效语法糖。

答案 1 :(得分:1)

不,C ++ switch个案只处理单个值。

您可以使用default语句添加if个案例来检查范围。或者直接使用if而不使用switch

答案 2 :(得分:1)

我可以建议:

switch(val){
    case 1:
    break;
    case 2:
    break;
    case 3:
    case 4: //etc
    default:
     //case > 100
}