七.switch语句
基本格式
- switch语句基本格式如下。其中case中的语句和break、default中的语句均可省略。
- 表达式——称为“条件表达式”,用作判断条件,取值为整型、字符型、布尔型或枚举型。 注意,不能是float型和double型,存在误差。
- 常量表达式——由常量构成,取值类型与表达式相同。
- 语句——可以是一条语句也可以是一组语句。
switch (表达式) {
case 常量表达式1:
//******语句****
break;
......
case 常量表达式n:
//******语句****
break;
default:
//******语句****
}
执行流程
- 根据表达式的值,在常量表达式中找到与之相等的分支,确定执行入口点;
- 顺序执行该分支的语句序列,直到遇到break语句或switch语句的“}”为止。
- 当表达式的值与所有常量表达式的值均不相等时,若有default分支,则执行其语句,否则跳出switch语句,执行后续语句。
注意
- 一般必须在case语句结尾添加break语句。
- 如果在switch中省略了break语句,那么匹配的case值后的所有情况(包括default情况)都会被执行。
情况一:按标准书写
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
//************************第一种情况*******************
int i = 10;
switch (i) {
case 0:
cout << "join 0..." << endl;
break;
case 5:
cout << "join 5..." << endl;
break;
case 10:
cout << "join 10..." << endl;
break;
default:
cout << "join default..." << endl;
break;
}
getchar();
return 0;
}
//结果:join 10...
- 情况二:遇break停止
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
//************************第二种情况*******************
int i = 10;
switch (i) {
case 0:
cout << "join 0..." << endl;
break;
case 5:
cout << "join 5..." << endl;
break;
case 10:
cout << "join 10..." << endl;
default:
cout << "join default..." << endl;
}
getchar();
return 0;
}
//执行结果:join 10... join default..."
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
//************************第二种情况*******************
int i = 5;
switch (i) {
case 0:
cout << "join 0..." << endl;
break;
case 5:
cout << "join 5..." << endl;
case 10:
cout << "join 10..." << endl;
break;
case 15:
cout << "join 15..." << endl;
default:
cout << "join default..." << endl;
}
getchar();
return 0;
}
//执行结果:join 5... join 10...
- 情况三:default的位置
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
//************************第三种情况*******************
int i = 15;
switch (i) {
default:
cout << "join default..." << endl;
case 0:
cout << "join 0..." << endl;
break;
case 5:
cout << "join 5..." << endl;
case 10:
cout << "join 10..." << endl;
break;
case 15:
cout << "join 15..." << endl;
}
getchar();
return 0;
}
//执行结果:join 15...
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
//************************第三种情况*******************
int i = 20;
switch (i) {
default:
cout << "join default..." << endl;
case 0:
cout << "join 0..." << endl;
break;
case 5:
cout << "join 5..." << endl;
case 10:
cout << "join 10..." << endl;
break;
case 15:
cout << "join 15..." << endl;
}
getchar();
return 0;
}
//执行结果:join default... join 0...
八.枚举变量的值如何计算
- 在枚举中,某个枚举变量的值默认为前一个变量的值加1,而如果第一个枚举变量没有被赋值,则默认值为0。
#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
enum{a,b=5,c,d=4,e};
cout << a << " " << b << " " << c << " " << d << " " << e << endl;
getchar();
return 0;
}
//执行结果:0 5 6 4 5