>i; 开关(一){ 案例“e”: 案例“i”: 案例“o”: 案例“u”: 案例“a”: 不能这样格式化它: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case 'e': case 'i': case 'o': case 'u': case 'a': cout<<"Vowel"; break; case '+': case '-': case '/': case '*': case '%': cout<<"Op"; break; } return 0; } 开关(一) { 案例“a”: 案例“e”: 案例“i”: 案例“o”: 案例“u”: 库特 您可以使用fallthrough将多个案例值映射到同一操作 诊断消息解释了这一点——可以跳过初始化。但这不只是一个警告吗,c++,switch-statement,C++,Switch Statement" /> >i; 开关(一){ 案例“e”: 案例“i”: 案例“o”: 案例“u”: 案例“a”: 不能这样格式化它: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case 'e': case 'i': case 'o': case 'u': case 'a': cout<<"Vowel"; break; case '+': case '-': case '/': case '*': case '%': cout<<"Op"; break; } return 0; } 开关(一) { 案例“a”: 案例“e”: 案例“i”: 案例“o”: 案例“u”: 库特 您可以使用fallthrough将多个案例值映射到同一操作 诊断消息解释了这一点——可以跳过初始化。但这不只是一个警告吗,c++,switch-statement,C++,Switch Statement" />

C++ 我们能用C++;转换 #包括 使用名称空间std; int main(){ char i; cin>>i; 开关(一){ 格('e'| | i'| | | | | | | | | | | | a'): 在没有中断语句的情况下,前面的案例可能会“失败”,因此这实现了您要寻找的|: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case ('e'||'i'||'o'||'u'||'a'): cout<<"Vowel"; break; case ('+'||'-'||'/'||'*'||'%'): cout<<"Op"; break; } return 0; } #包括 使用名称空间std; int main(){ char i; cin>>i; 开关(一){ 案例“e”: 案例“i”: 案例“o”: 案例“u”: 案例“a”: 不能这样格式化它: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case 'e': case 'i': case 'o': case 'u': case 'a': cout<<"Vowel"; break; case '+': case '-': case '/': case '*': case '%': cout<<"Op"; break; } return 0; } 开关(一) { 案例“a”: 案例“e”: 案例“i”: 案例“o”: 案例“u”: 库特 您可以使用fallthrough将多个案例值映射到同一操作 诊断消息解释了这一点——可以跳过初始化。但这不只是一个警告吗

C++ 我们能用C++;转换 #包括 使用名称空间std; int main(){ char i; cin>>i; 开关(一){ 格('e'| | i'| | | | | | | | | | | | a'): 在没有中断语句的情况下,前面的案例可能会“失败”,因此这实现了您要寻找的|: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case ('e'||'i'||'o'||'u'||'a'): cout<<"Vowel"; break; case ('+'||'-'||'/'||'*'||'%'): cout<<"Op"; break; } return 0; } #包括 使用名称空间std; int main(){ char i; cin>>i; 开关(一){ 案例“e”: 案例“i”: 案例“o”: 案例“u”: 案例“a”: 不能这样格式化它: #include <iostream> using namespace std; int main(){ char i; cin >>i; switch (i){ case 'e': case 'i': case 'o': case 'u': case 'a': cout<<"Vowel"; break; case '+': case '-': case '/': case '*': case '%': cout<<"Op"; break; } return 0; } 开关(一) { 案例“a”: 案例“e”: 案例“i”: 案例“o”: 案例“u”: 库特 您可以使用fallthrough将多个案例值映射到同一操作 诊断消息解释了这一点——可以跳过初始化。但这不只是一个警告吗,c++,switch-statement,C++,Switch Statement,不,您不能;在开关es中,您只能隐式使用=运算符,并且只能在整数和枚举类型上使用(§6.4.2)。您应该将该开关重写为 switch (i) { case 'a': case 'e': case 'i': case 'o': case 'u': cout << "Vowel"; break; } 开关(一){ 案例“e”: 案例“i”: 案例“o”: 案例“u”: 案例“a”: cout更简洁的替代解决方案:

不,您不能;在
开关
es中,您只能隐式使用
=
运算符,并且只能在整数和枚举类型上使用(§6.4.2)。您应该将该
开关重写为

switch (i)
{
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
        cout << "Vowel";
        break;
}
开关(一){
案例“e”:
案例“i”:
案例“o”:
案例“u”:
案例“a”:

cout更简洁的替代解决方案:

switch (i){
 case 'e':
 case 'i':
 case 'o':
 case 'u':
 case 'a':
     cout<<"Vowel";
     break;
 case '+':
 case '-':
 case '/':
 case '*':
 case '%':
     cout<<"Op";
     break;
 }
#包括
// ...

如果(strchr(“eioua”,i))不能我们可以,除非它并不意味着我们想要的(并且在两种情况下产生相同的值):您将对一组非零整数值执行逻辑or,在这两种情况下,结果都是true

+1表示第一部分的正确答案,我将给出另一个+1表示通过提供链接避免答案重复。重复:
#include <cstring>

// ...

if (strchr("eioua", i)) cout << "vowel";
if (strchr("+-/*%", i)) cout << "operator";