控制switch语句中的结构

MTV*_*TVS 2 c++ switch-statement

为什么if块中的代码以任何方式执行?

switch(v)
{
case a:
    break;
...
if(condition)
{
    case f:
        ...
        break;
    case g:
        ...
        break;
}
...
case z:
    ...
    break;
default:
}
Run Code Online (Sandbox Code Playgroud)

Veg*_*ger 9

C++编译器使用查找表或直接分支到case-statements.忽略你的if陈述.由于break它也没有达到case a.

很长的答案,你不能case使用这种方法'关闭' - 陈述.

相反,你需要这样的东西:

switch(v) {
  case a :
    break;
  //...
  case f :
    if(condition) {
      //...
    }
    break;
  case g :
    if(condition) {
      //...
    }
    break
  //...
  case z :
    break;
}
Run Code Online (Sandbox Code Playgroud)