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;
// ...
请注意,某些编译器会在 case
s 中包含语句时发出警告(上述情况并非如此)。从 C++17 开始,如果您使用失败案例,则可以使用 fallthrough
属性在您实际想要失败的地方消除此类警告。
我正在试验是否可以在 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;
// ...
请注意,某些编译器会在 case
s 中包含语句时发出警告(上述情况并非如此)。从 C++17 开始,如果您使用失败案例,则可以使用 fallthrough
属性在您实际想要失败的地方消除此类警告。