1 本课主要内容:
- 为什么需要有 switch 多分支选择?应用场景在哪里?
- switch 多分支选择的应用讲解:case, break,default
2 主要知识点:
-
为什么需要有 switch 多分支选择
思考一个问题,数学老师需要统计班上同学,期末考试获得A+、A、B+、B、C总共五个等级学生分别总人数时,就可以使用 switch 多分支选择语句,代码例子如下:
// 考试等级类型
enum LevelType {
LevelAPlus // A+
, LevelA // A
, LevelBPlus // B+
, LevelB // B
, LevelC // C
};
int aPlusNumber{0}; // A+人数
int aNumber{0}; // A人数
int bPlusNumber{0}; // B+人数
int bNumber{0}; // B人数
int cNumber{0}; // C人数
...
LevelType level{0}; //考试等级
...
switch (level) {
case LevelType::LevelAPlus:
aPlusNumber++; // A+人数加1
break;
case LevelType::LevelA:
aNumber++; // A人数加1
break;
case LevelType::LevelBPlus:
bPlusNumber++; // B+人数加1
break;
case LevelType::LevelB:
bNumber++; // B人数加1
break;
default:
cNumber++; // 其他(C)人数加1
break;
}
-
哪些数据类型可用于 switch 语句
char, short, int, long, bool, enum 数据类型可以用于 switch 多分支选择;switch 多分支选择格式例子如下:
语句格式:
switch (...) {
case v1: {
...
break;
}
case v2: {
...
break;
}
default: {
...
break;
}
}
执行顺序如下:
1 判断 (...)的值,如果跟对应哪个 case (v1,v2,...) 的值相等,进入 2 ,否则进入 3 default 分支(可选)
2 直接执行对应 case (v1,v2,...) 后面的代码,一直到 break 指令跳出分支,否则继续执行下一个 case 的 {...} 代码,直到遇到 break 或者 switch 最后一行代码;
3 执行 default 后面 {...} 代码
// 例子:
int a{0};
...
switch (a) {
case 0: {
// a==0执行以下代码
// ...
break;
}
case 1: {
// a==1执行以下代码
// ...
break;
}
default: {
// 其他情况下,执行以下代码;
// default属于可选分支,可以
// ...
break;
}
}
char 字符的 switch case 例子:
char c{' '};
...
// char 类型使用 '' 来写 case 判断,如下例子:
switch (c) {
case 'A': {
break;
}
default: break;
}
-
break 用于退出当前分支或当前代码块
case 分支代码最后必须加上 break 退出当前分支,否则会执行到下一个 case 分支代码
-
default 默认分支
default 默认分支属于可选分支,建议最后都写上,可以写上 (default: break;)
3 一些建议:
- case 分支代码超过二行,用 { } 代码块编写代码;如下二种例子:
int a = 10;
int b = 20;
...
switch (a) {
case 0: // 可以不用加上 {}
a += 10;
break;
case 1: { // 超过二行代码,加上 {}
a += 10;
b -= 10;
break;
}
default:
break;
}
- 如果 {...} 代码块里面写的代码行数太多,建议编写成函数来调用;
int a{0};
...
switch (a) {
case 0:
set_value(a); // 添加函数调用
break;
default: break;
}
4 课后练习:
- 练习1:利用 std::random_device 产生 10000 组随机无符号整数,计算这 10000 组随机数除以 10 的余数,从 0 到 9 分别计算个数,把计算结果输出到屏幕
附录:在线视频课程
进入视频号学习本文配套视频课程。
-【End】-
哈喽,大家好!我是喜欢coding的小二,一枚“靓仔又不掉头发”的C++开发大头兵;欢迎围观公众号(20YC编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。
#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。
喜欢本文章,记得点赞、分享、关注哦~