在C++中用Switch-Case做一个OR

hyp*_*not 8 c++ visual-studio-2010

你会如何用C++做到这一点?例如,如果用户按下ESC或"q"或"Q",我试图触发程序退出.

我试过寻找它,但我在C++中找不到它的语法.我知道如何用if-else来做,但是有可能用switch - case吗?当然我可以创建一个函数并从两个独立的案例中调用它,但有没有办法通过组合case语句来完成它?

例如,这就是我正在寻找的(当然不工作):

void keyboard( unsigned char key, int x, int y )
{
    switch( key )
    {
        case ( 27 || 'q' || 'Q' ):
            exit( 0 );
            break;

        case 'a': ...

                case 'b': ...
    }
}
Run Code Online (Sandbox Code Playgroud)

chr*_*ris 35

案件不间断地落下:

case  27: //could be 27
case 'q': //could be 27 or 'q'
case 'Q': //could be 27, 'q', or 'Q'
    exit(0);
    break;
Run Code Online (Sandbox Code Playgroud)

  • 并且_ALWAYS_发表评论说,这个问题是故意的,为什么会这样. (4认同)
  • @MooingDuck clang有[`[[clang :: fallthrough]]`](http://clang.llvm.org/docs/LanguageExtensions.html#clang__fallthrough),这可能也很有趣. (4认同)
  • 我生命中的故事. (2认同)