【C++程序员必修课】C++基础课程-07:switch 分支选择

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编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。

#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。

喜欢本文章,记得点赞、分享、关注哦~

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天恩软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值