C++四种case的详细介绍小结

C++四种case的详细介绍小结

在C++中,switch语句可以使用四种语句类型,用于匹配不同的情况(case)。这四种语句类型是:

  1. case表达式常量
  2. case枚举常量
  3. case constexpr函数
  4. 不带表达式的case

下面我们来一一介绍。

1. case表达式常量

这种情况下,case后面直接跟一个常量表达式,如下所示:

switch (n) {
    case 1:
        // do something
        break;
    case 2:
        // do something
        break;
    default:
        // do something
}

在这个例子中,case语句后面跟的是1和2,这两个数字是常量表达式。如果n的值为1,程序将执行第一个case之后的代码,如果n的值为2,程序将执行第二个case之后的代码。

需要注意的是,case后的常量表达式必须是整数类型(int, char, enum等),否则会报错。

2. case枚举常量

如果枚举类型中的成员在switch语句中被使用,则可以使用枚举常量来匹配不同情况,如下所示:

enum Color{red, blue, green};

switch (c) {
    case Color::red:
        // do something
        break;
    case Color::blue:
        // do something
        break;
    case Color::green:
        // do something
        break;
    default:
        // do something
}

在这个例子中,case后面跟的是枚举成员Color::red, Color::blue, 和Color::green。如果c的值是Color::red,程序将执行第一个case之后的代码,如果c的值是Color::blue,程序将执行第二个case后的代码。

3. case constexpr函数

在C++11及以后版本中,可以使用constexpr函数来实现case语句。constexpr函数可以在编译时求值,具有常量表达式的特性。示例如下:

constexpr int add(int a, int b) {
    return a + b;
}

int main() {
    constexpr int num = add(1, 2);

    switch (num) {
        case 3:
            // do something
            break;
        default:
            // do something
    }
}

在这个例子中,add函数使用了constexpr关键字,表示该函数可以在编译时求值。num的值是函数add在编译时求得的常量3,因此可以被用于case语句。

4. 不带表达式的case

如果case标签没有任何表达式,它被称为不带表达式的case,如下所示:

switch (n) {
    case 0:
        // do something
        break;
    case 1:
        // do something
        break;
    case 2:
    case 3:
        // do something
        break;
    default:
        // do something
}

在这个例子中,第一个和第二个case带有表达式,而第三个case标签并没有表达式。如果n的值是0,程序将执行第一个case之后的代码,如果n的值是1,程序将执行第二个case之后的代码,而如果n的值是2或3,程序将执行第三个case之后的代码。最后,如果n的值不是上述任何一个值,程序将执行default之后的代码。

示例说明

下面将给出一个有关switch的使用示例:

#include <iostream>
#include <string>

using namespace std;

enum weekdays {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};

string get_weekday(weekdays day) {
    switch(day) {
        case MONDAY:
            return "Monday";
        case TUESDAY:
            return "Tuesday";
        case WEDNESDAY:
            return "Wednesday";
        case THURSDAY:
            return "Thursday";
        case FRIDAY:
            return "Friday";
        case SATURDAY:
            return "Saturday";
        case SUNDAY:
            return "Sunday";
        default:
            return "";
    }
}

int main() {
    int day = 1;
    weekdays current_day = static_cast<weekdays>(day - 1);
    string weekday = get_weekday(current_day);
    cout << "Today is " << weekday << endl;
    return 0;
}

在这个例子中,我们使用一个枚举类型 weekdays 来表示星期几,然后用一个case语句对每一天的情况进行匹配,从而返回对应的字符串。在main函数中,我们使用整数1来表示星期一,将其映射为weekdays::MONDAY,选择通过switch语句来得到对应的星期字符串。

另一个示例:

#include<iostream>
using namespace std;

int main() {
    int n = 3;

    switch(n % 2) {
        case 0:
            cout << n << " is even";
            break;
        case 1:
            cout << n << " is odd";
            break;
    }
    return 0;
}

在这个例子中,我们使用n % 2,一个常量表达式,来表示n是奇数还是偶数,然后用case语句来匹配不同的情况。如果n是偶数,程序将会输出“3 is even”,否则,程序将会输出“3 is odd”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++四种case的详细介绍小结 - Python技术站

(2)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 深入理解C++模板如何实现多态思想

    深入理解C++模板如何实现多态思想 C++模板是一种高度通用化的编程工具,除了可以用来实现代码复用之外,还可以用来实现多态的编程思想。在这里,我将详细介绍如何使用C++模板来实现多态的思想,涵盖泛型编程、函数模板、类模板等方面。 一、泛型编程泛型编程是C++模板多态思想的最基本组成部分,其核心思想是将数据类型与算法分离,从而实现代码的通用化。在使用C++模板…

    C 2023年5月23日
    00
  • C语言如何实现翻转字符串中的单词

    翻转字符串中的单词是C语言中常用的字符串操作之一,实现该功能的主要思路如下: 读入原字符串 按空格将字符串分割成单词数组 翻转单词数组 按照空格重新组合单词数组形成新的字符串 以下是实现该功能的完整代码: #include <stdio.h> #include <string.h> void reverseWords(char* s)…

    C 2023年5月23日
    00
  • C语言实现推箱子游戏

    C语言实现推箱子游戏攻略 推箱子(Sokoban)是一款经典的益智游戏,玩家需要在推推小车的帮助下,把箱子放到指定位置。本文将详细讲解如何用C语言实现推箱子游戏。 程序概述 本程序将会实现以下功能: 在命令行界面中显示地图; 使用WASD或方向键等控制字符移动,推动箱子; 判断胜利条件,即是否所有箱子都被成功推到目标位置。 程序设计 地图设计 地图由 C语言…

    C 2023年5月23日
    00
  • C语言实现抢红包算法

    C语言实现抢红包算法 在C语言中实现抢红包算法可以分为以下几个步骤: 步骤一:确定红包总金额以及红包个数 在C语言中,可以通过从键盘输入获取红包总金额和红包个数。可以用 scanf() 函数来实现,代码示例如下: printf("请输入红包总金额:"); scanf("%f",&total_money); pr…

    C 2023年5月22日
    00
  • java抛出异常的几种情况小结

    让我详细讲解一下“Java抛出异常的几种情况小结”的完整攻略。 1. Java抛出异常的概念 Java中的异常是指在程序运行时发生了错误或异常情况而无法正常执行的情况。简单来说,当程序出现意料之外的错误或者问题,抛出异常是必须的。 2. Java异常的分类 Java异常可以分为两类:检查异常和非检查异常。 2.1 检查异常 当程序出现问题时,会产生一个检查异…

    C 2023年5月23日
    00
  • MathWorks MATLAB R2020b详细密钥安装教程(附许可下载)

    MathWorks MATLAB R2020b详细密钥安装教程(附许可下载) 简介 MathWorks MATLAB R2020b是一款流行的科学计算软件,广泛用于工程、科学和数学领域。为了使用MATLAB软件,需要先安装软件并激活许可证。 本篇文章将提供详细的步骤来完成MathWorks MATLAB R2020b的安装和许可证激活过程。此外,我们还会提供…

    C 2023年5月22日
    00
  • C++实现简单信息管理系统

    下面是C++实现简单信息管理系统的完整攻略: 1. 确定需求 在开发信息管理系统之前,我们需要确定所需功能。例如,这个信息管理系统需要哪些模块、哪些操作、需要保存哪些信息等等。只有确定了这些需求之后,才能知道如何实现系统。 2. 设计系统框架 在确定了需求之后,可以开始设计系统框架。系统框架包括模块划分、数据结构设计等。可以使用流程图、UML图等工具来完成系…

    C 2023年5月23日
    00
  • 电脑开机黑屏错误提示0xc0000e9怎么办?

    电脑开机黑屏错误提示0xc0000e9的解决方法 问题描述 当你从电脑开机时,如果出现了“电脑开机黑屏错误提示0xc0000e9”的错误,那么说明电脑在启动过程中遇到了一些问题,无法正常启动。这时电脑会停在黑屏界面,无论你进行任何操作,都无法进入系统。此时应该如何处理呢? 解决方法 方法一:检查硬件连接 0xc0000e9错误通常是硬件损坏或者连接错误导致的…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部