C++中的Switch 语句详情

 更新时间:2021年11月10日 10:32:11   作者:梁唐  
在日常的开发当中,我们经常会遇到一种情况,我们用一个变量表示状态。比如关闭-激活-完成,当我们需要判断状态的时候,就需要罗列if-else语句。今天这篇文章我们就来介绍一下C++ Switch 语句,需要的朋友可以参考一下

在日常的开发当中,我们经常会遇到一种情况,我们用一个变量表示状态。比如关闭-激活-完成,当我们需要判断状态的时候,就需要罗列if-else语句。

if (status == 'closed') { 
    // todo 
}else if (status == 'activated') { 
    // todo 
}else if (status == 'done') { 
    // todo 
} 

如果只有少数几个还好,当我们要枚举的状态多了之后,写if-else就会非常繁琐。所以C++当中提供了switch语句来代替简单的if-else的罗列。

switch(expression) { 
    case constant1: 
        //todo 
    case constant2: 
        //todo 
    case constant3: 
        //todo 
    default: 
        //todo 
} 

要注意:switch语句当中的expression只能是一个整数或者是枚举类型,不能是其他类型。比如像是string就不可以作为switch语句的case,这个非常坑,很容易不小心写错。

所以上面的if-else语句可以改写成:

switch (status) { 
    case 1: 
        // todo1 
        break; 
    case 2: 
        // todo2 
        break; 
    case 3: 
        // todo3 
        break; 
    default: 
        //todo 
} 

最后的default表示默认情况,也就是当之前的所有可能都不满足时会执行defalut标签下的内容。还有一点需要注意,switch语句有点像是路牌,它只是根据expression的值将代码跳转到对应的位置,并不是只运行对应标签的代码。

比如当我们的status为1时,代码会跳转到todo1处,在执行完todo1之后依然会继续往下执行todo2、todo3的代码。如果我们只希望执行todo1的代码,需要在末尾加上break,表示执行结束,跳出。这也是一个坑点,加不加break完全是两种效果。

数字1、2、3表示状态显然会导致含义不够明显,所以我们也可以使用枚举类型:

enum status {closed, done, activated}; 
 
status st;  
 
switch (st) { 
    case closed: 
        //todo 
        break; 
    case done: 
        //todo 
        break; 
    case activated: 
        //todo 
 default: 
        //todo 
} 

到此这篇关于C++ Switch 语句详情的文章就介绍到这了,更多相关C++ Switch 语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于C语言编写简易的英文统计和加密系统

    基于C语言编写简易的英文统计和加密系统

    这篇文章主要介绍如何基于C语言编写一个简易的英文统计和加密系统,实际上就是对字符数组的基本操作的各种使用,感兴趣的可以了解一下
    2023-05-05
  • C++  STL _ Vector使用及模拟实现

    C++  STL _ Vector使用及模拟实现

    这篇文章主要介绍了C++ STL_Vector使用及模拟实现,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 深入探究协程在C++中的实现方式

    深入探究协程在C++中的实现方式

    协程可以被看作是计算机程序中的独立功能块,它们在执行过程中能够暂停和恢复,与传统的函数调用相比,协程更像是一种轻量级的线程,本文我们将深入探究协程在C++中的实现方式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • 基于C++实现的各种内部排序算法汇总

    基于C++实现的各种内部排序算法汇总

    这篇文章主要介绍了基于C++实现的各种内部排序算法,非常经典,需要的朋友可以参考下
    2014-08-08
  • Qt实现图片移动实例(图文教程)

    Qt实现图片移动实例(图文教程)

    这学期实训的时候用MFC做过一个飞机大战,很无聊的东西,一直想用Qt做一个;首先需要解决的问题是图片的移动,怎么说飞机啊子弹啊都是动着的,图片当然要跑起来,感兴趣的你可不要走开啊
    2013-01-01
  • 基于C++实现的哈夫曼编码解码操作示例

    基于C++实现的哈夫曼编码解码操作示例

    这篇文章主要介绍了基于C++实现的哈夫曼编码解码操作,结合实例形式分析了C++实现的哈夫曼编码解码相关定义与使用技巧,需要的朋友可以参考下
    2018-04-04
  • C语言用循环单链表实现约瑟夫环

    C语言用循环单链表实现约瑟夫环

    这篇文章主要为大家详细介绍了C语言用循环单链表实现约瑟夫环,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 详解C语言中symlink()函数和readlink()函数的使用

    详解C语言中symlink()函数和readlink()函数的使用

    这篇文章主要介绍了详解C语言中symlink()函数和readlink()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C语言操作符基础知识详解

    C语言操作符基础知识详解

    这篇文章主要以图文结合的方式为大家详细介绍了C语言位运算基础知识,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-10-10
  • 详解C++设计模式编程中对状态模式的运用

    详解C++设计模式编程中对状态模式的运用

    这篇文章主要介绍了C++设计模式编程中对状态模式的运用,状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,需要的朋友可以参考下
    2016-03-03

最新评论