是否可以在Switch语句中执行以下操作 - C++?

Ale*_*lex 8 c++ switch-statement

我是第二个OOP课程的编程学生,我有一个简单的问题,我无法在互联网上找到答案,如果它在那里,我道歉.

我的问题是:

是否有可能在switch语句中有布尔条件?

例:

switch(userInputtedInt)
{
    case >= someNum && <= someOtherNum
    break;
    // Is this possible?
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 13

不,这在C++中是不可能的.Switch语句仅支持简单的整数匹配.如果您需要复杂的布尔条件,那么您应该使用if/else块


pax*_*blo 7

不,这通常是if声明的范围:

if ((userInputtedInt >= someNum) && (userInputtedInt <= someOtherNum)) { ... }
Run Code Online (Sandbox Code Playgroud)

当然,您可以将其合并到一个switch声明中:

switch (x) {
    case 1:
        // handle 1
        break;
    default:
        if ((x >= 2) && (x <= 20)) { ... }
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ing 7

正如其他人所说,你无法直接实现这一点,因为C++语法不允许这样做.但你可以这样做:

switch( userInputtedInt )
{
  // case 0-3 inclusve
  case 0 :
  case 1 :
  case 2 :
  case 3 :
    // do something for cases 0, 1, 2 & 3
    break;

  case 4 :
  case 5 :
    // do something for cases 4 & 5
    break;
}
Run Code Online (Sandbox Code Playgroud)

  • @Alex:实际上,虽然这得到了C++的支持,但我发现它通常不像你最初想的那么具有表现力和用处.像这样的切换语句往往变得庞大,使得它们难以阅读,维护和调试.在使用这样的开关之前,我通常会使用ifs.或者更好,但我会完全做其他事情. (5认同)