switch在C++中的⽤法以及⽤switch结构时要注意的问题(细节问题⽐较全⾯)在做题时发现⾃⼰将⼤⼀学的switch忘得差不多了,特地回顾⼀下。有不对地⽅欢迎指出,⼀起探讨。
⽤switch结构时注意的问题:
1.switch只能接受整型和字符型,所以后⾯的各个case的取值也只能是整型或者字符型,不能是字符串!不能是变量!⽽且是相等时才执⾏
2.case后⾯若是字符型⼀定加的是单引号,加双引号会被认为是字符串,不加单引号会被认为是变量(例如不加单引号,case b时:[Error] the value of ‘b’ is not usable in a constant expression或者 [Error] ‘b’ was not declared in this scope)
3.case后⾯的常量可以加⼩括号也可以不加
4.default后⾯不⽤再加break,当然,加上也不是不⾏
5.case 常量 后⾯的语句:不⽤写花括号将case之后的语句括起来,有多条语句也不⽤
6.case后⾯不能跟表达式,如case(a>100)是不⾏的,可以⽤if ···else···语句来达到⽬的
7.case后⾯的数字直接跟就可以,如case 1,不⽤加单引号,否则会被认为是字符!那么就会与数字的ASCII码进⾏⽐较。
简⾔之,你定义的switch接收的是整型还是字符型,后⾯case对应的取值判断时,也会把它转换成整型或者字符型的再去和输⼊⽐较。
case 后⾯跟的是switch(a)中这个变量a的可能的具体取值,
例如:
case 1:
······; break;
是当a==1时的处理情况。
验证的代码如下:switch case判断字符串
#include<iostream>
using namespace std;
const int N=1005;
int main()
{
//int a;
char a;
while(true)
{
cin>>a;
switch(a)
{
case1:
cout<<"case 1!"<<endl;  cout<<"case 1!!"<<endl;break;//不⽤写花括号将case之后的语句括起来
case'2'://与2的ASCII码⽐较
{ cout<<"case 2!"<<endl;break;}
//  case b:
//  { cout<<"case b!"<<endl; break;  }      //  这样写不可以,会报错:[Error] 'b' was not declared in this scope            //编译器将b当作变量对待
case'b':
{ cout<<"case 'b'!"<<endl;break;}
/* case "6":                                          //  不可以,只能接收字符型或整型,不能是字符串常量
{ cout<<"case "b"!"<<endl; break;  }          */
/* case (a>100):                        //  [Error] the value of 'a' is not usable in a constant expression
{ cout<<"case a>100!"<<endl; break;  }        //不能是表达式,表达式可以⽤if else语句来写          */
case(7)://case后⾯可以加括号,也可以不加
cout<<"case 7!"<<endl;break;
default:
cout<<"case 默认!"<<endl;//default后不⽤加break
}
}
return0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。