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++ 在线工具 1. Codepad Codepad 是一个在线代码编辑器,它支持多种编程语言,包括 C++。Codepad 的界面简洁明了,编辑区域清晰易懂,输出结果也能够很好地呈现。使用 Codepad,你可以快速试错,调试你的 C++ 代码。 Codepad 提供的编译器版本较新,比如它使用…

    C 2023年5月23日
    00
  • 详解C语言初阶基础

    详解C语言初阶基础 C语言是一种强大的编程语言,可用于编写操作系统、游戏、桌面应用程序等。本文将详细介绍C语言的初阶基础,以帮助初学者快速掌握C语言的入门知识。 1. C语言的基本概念 C语言是一种结构化的高级编程语言,最初由Dennis Ritchie于1972年开发。它是一门静态类型的编程语言,意味着在编写代码时,程序员必须声明变量的类型,而且一旦声明后…

    C 2023年5月23日
    00
  • C语言各种符号的使用介绍下篇

    C语言各种符号的使用介绍 1. 赋值操作符 赋值操作符=用于将表达式右边的值赋给左边的变量。例如: int a; a = 10; 上述代码中,将整数值10赋值给变量a。 2. 算术操作符 2.1 加法操作符 加法操作符+用于将两个值相加。例如: int a = 10; int b = 20; int c = a + b; 上述代码中,将变量a和b的值相加,将…

    C 2023年5月23日
    00
  • C语言使用指针的一维数组

    下面就是关于C语言使用指针的一维数组的使用攻略: 一、什么是一维数组 一维数组是一种常见的数据结构,它由相同类型的数据元素按顺序排列,并以一个变量名引用整个数组,在C语言中,数组的下标从0开始,下标的最大值为数组长度减1。 二、C语言使用指针的一维数组 在C语言中,我们可以使用指针来访问一维数组中的元素,常用的访问方式有两种:指针加下标和指针变量。 2.1 …

    C 2023年5月9日
    00
  • C程序 检查一个数字是否可以表示为两个素数之和

    为了解决这个问题,可以采用“筛法”,即筛选素数,然后枚举其中的两个素数,判断它们的和是否等于给定的数字。 具体步骤如下: 先构造一个数组 marks,用于记录数字是否是素数。这里的实现用到了“埃氏筛法”。 int marks[MAX_N + 1]; // marks[i] 表示数字 i 是否为素数 memset(marks, 1, sizeof(marks)…

    C 2023年5月9日
    00
  • C++中的常对象与常对象成员详解

    C++中的常对象与常对象成员详解 在C++中存在常对象和常对象成员,它们都有一个共同点:都不允许在对象的生命周期内被修改。下面我们详细讲解常对象和常对象成员的定义、声明、初始化及其特点。 常对象 定义 常对象是指一个对象在它被创建后就无法被修改。在C++中,我们可以通过在对象类型前面加上const关键字来定义常对象。例如: const int a = 10;…

    C 2023年5月22日
    00
  • Sublime Text 3 实现C语言代码的编译和运行(示例讲解)

    下面我将详细讲解一下“Sublime Text 3 实现C语言代码的编译和运行(示例讲解)”的完整攻略。 前提条件 在开始这个攻略之前,我们需要做好以下准备工作: 安装Sublime Text 3; 安装C语言编译器; 在Sublime Text 3中安装Package Control; 安装Package Control Package Control 是…

    C 2023年5月23日
    00
  • C币交易所是怎么交易数字货币的?C币交易所支持哪些数字货币交易?

    C币交易所是一个数字货币交易平台,支持用户交易多种数字货币。在 C币交易所进行数字货币交易,需要注册一个账户,然后在账户中充值一定数量的数字资产,再根据当前市场价格进行买卖交易。 以下是数字货币交易的具体流程: 1. 注册账户 在C币交易所的官网上点击注册按钮,填写必要的个人信息完成注册并激活账户后,即可开始数字货币交易。 2. 充值数字资产 在C币交易所首…

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