在switch和if语句的条件判断中,为什么不能使用这样的判断语句?
问题描述:
(我是大一新生,还请多多包涵。叩谢各位)
(并不是为了完成homework,是个人疑问,已经问过teacher,但是没有给我明确的回答,所以来问问看)
在日常敲代码中,我遇到了一个问题:先是在switch语句中,switch语句的判断条件只能是一个常量,我写了如下的代码
#include <iostream>
using namespace std;
int main()
{ char A;
cout<<"请输入一个字母";
cin>>A;
switch(A)
{case 'a'||'u'||'O'||'i'||'e' :cout<<"原音"<<endl;break;
case 'q'||'w'||'r'||'t'||'y'||'p'||'s'||'d'||'f'||'g'||'h'||'j'||'k'||'l'||'z'||'x'||'c'||'v'||'b'||'n'||'m' :cout<<"辅音"<<endl;break;
default :cout<<"不是英文字母" ;break;
}
return 0;
}
但是并不能跑起来(我觉得用单引号引用后就是常量了)
我又换用了if语句,但是仍然不能正常运行,非常疑惑。
我个人感觉是不是因为用逻辑运算符后,前两个判断后变为1,再与后边的继续进行逻辑判断,如果是这样,那应该最终可以输出一个数字,但是也不能输出一个数字,就很疑惑。
答
case不可以用逻辑运算符
应该是这样
#include <iostream>
using namespace std;
int main()
{
char A;
cout << "请输入一个字母";
cin >> A;
switch(A)
{
case 'a':
case 'u':
case 'o':
case 'i':
case 'e':
cout << "原音" << endl;
break;
case 'q':
case 'w':
case 'r':
case 't':
case 'y':
case 'p':
case 's':
case 'd':
case 'f':
case 'g':
case 'h':
case 'j':
case 'k':
case 'l':
case 'z':
case 'x':
case 'c':
case 'v':
case 'b':
case 'n':
case 'm':
cout << "辅音" << endl;
break;
default :
cout << "不是英文字母";
break;
}
return 0;
}
这样会感觉很麻烦,还不如用if
答
switch可以,但case不可以
必须:
case 'a':
case 'u':
case 'o':
case 'i':
case 'e':
cout<<"原音"<<endl;
break;