c++ switch - 不评估和显示 "Condition is always true"

c++ switch - not evaluating and showing "Condition is always true"

我正在试验是否可以在 switch 语句中使用“逻辑或”inside case 子句。我在第一种情况下尝试了这种方式,当我在这两种情况下都输入“A”或“a”时,系统一起跳过了它。

# include <iostream>
using namespace std;

int main () {
  /* prg. checks if the input is an vowel */

  char ch;
  cout << "please input a word to check if it is vowel or not" << endl;
  cin >> ch;

  switch (ch) {
      case ('A'|| 'a') :
          cout << "it is vowel" << endl;
          break;

      case 'E':
          cout << "it is vowel" << endl;
          break;

      case 'I':
          cout << "it is vowel" << endl;
          break;

      case 'O':
          cout << "it is vowel" << endl;
          break;

      case 'U':
          cout << "it is vowel" << endl;
          break;

      default:
          cout << "it is not a vowel" << endl;
          break;


  }

在 case 子句中使用 or 有正确的方法吗?

感谢您的帮助。

case ('A'|| 'a')应该写成:

switch (ch) {
case 'A':
case 'a':
    cout << "it is vowel" << endl;
    break;
// ...

如果它在 'A' 上匹配,它将落入下一个 case(除非中间有一个 break)。

在这种情况下,您可能需要合并 所有 个元音:

switch (ch) {
case 'A':
case 'a':
case 'E':
case 'e':
//... all of them ...
    std::cout << "it is vowel\n";
    break;
// ...

请注意,某些编译器会在 cases 中包含语句时发出警告(上述情况并非如此)。从 C++17 开始,如果您使用失败案例,则可以使用 fallthrough 属性在您实际想要失败的地方消除此类警告。