c++ switch 语句

switch 语句是 c++ 的开关语言,可以看做是 if 语句的升级版本(多分支选择),其表达式如下:

cpp 复制代码
switch(表达式){
    case 常量表达式1:语句1
    case 常量表达式2:语句2
    case 常量表达式3:语句3
    ...
    case 常量表达式n:语句n
    default: 语句n+1
 }

switch 语句有以下要求:

  1. 整数型分支判断:switch 括号中的表达式只能是整数、字符型或枚举型表达式。case 后面的常量表达式类型与其匹配。
  2. default 分支:当传入的表达式值与某个 case 后面的常量值相等,就执行此 case 后面的语句,如果所有的 case 语句中表达式都不匹配,就执行 default 语句;若没有 default 语句,则直接退出 switch 语句。
  3. case 常量表达式:其中的表达式不能重复,如果有任意两个 case 之后的常量表达式值相同,则会编译报错,因为程序不知道当传入的常量为此表达式值时,执行哪条语句。
  4. 遇到 break 退出:因为 case 语句只起到标号作用,case 于 default 并不能改变控制流程,程序会根据常量表达式执行了相应的 case 语句,然后会继续判断其后的 case 语句,浪费了资源。使用 break 保证在实现要求后直接跳出。

一段简单代码:测试 enum 和 break

cpp 复制代码
#include <QCoreApplication>
#include <iostream>

using std::cout;
using std::endl;

enum FRUIT {
    APPLE = 1,
    ORANGE = 2,
    PEACH = 4
};

int testSwitch(FRUIT f)
{
    switch (f) {
    case APPLE:
        return 1;
        break;

    case ORANGE:
        return 2;
        break;

    case PEACH:
        return 4;
        break;
    }
}

int testSwitch01(int i)
{
    switch (i) {
    case 1:
        return 10;

    case 2:
        return 20;

    case 3:
        return 30;

    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    FRUIT f = ORANGE;

    cout<< testSwitch(f) << endl;

    cout<< testSwitch01(1) << endl;

    return a.exec();
}

运行结果:

cpp 复制代码
2

10
相关推荐
小超人诞生日记1 分钟前
C++ STL 反向迭代器:从源码框架到适配器实现
c++·算法
青少儿编程课堂11 分钟前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园成语接龙大挑战解析
c++·python·算法·bfs·信息学竞赛
Raas10019 分钟前
AI网关如何接入?MAI Gateway部署实操教程
java·开发语言·人工智能·gateway·ai网关·mai gateway·企业级产品
小贾要学习21 分钟前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
小小龙学IT25 分钟前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
starzy199037 分钟前
Scala Set深度解析:为什么大数据开发离不开它?
大数据·开发语言·scala
熊猫钓鱼>_>1 小时前
三方库 NDK 原生模块跨平台适配与调试【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙心迹
A7bert7771 小时前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
HANDY092001 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析
c++·python·算法·bfs·信息学竞赛