首页 > 其他分享 >1.枚举的使用

1.枚举的使用

时间:2025-01-05 11:31:11浏览次数:6  
标签:case week 常量 Sun enum 枚举 使用

枚举

复习:C++中switch语句用法
switch(expression){
    case constant-expression  :
       statement(s);
       break; // 可选的
    case constant-expression  :
       statement(s);
       break; // 可选的

    // 您可以有任意数量的 case 语句
    default : // 可选的
       statement(s);
}

switch语句等同于无数个if判断语句expression 必须是一个整型或枚举类型,或者是一个 class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。其中,每句case中的break并不是必须的,如果没有break语句,程序会接着执行下面的case语句

C++枚举类型

枚举类型的定义:枚举类型是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。

定义格式:
enum <类型名> {<枚举常量表>};
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week

枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,默认状态下,这个整数就是所列举元素的序号,序号从0开始。 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。 各枚举常量的值可以重复。例如:

enum fruit_set {apple, orange, banana=1, peach, grape}
//枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。
enum week {Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat};
//枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。

枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。例如,以下定义非法:

enum letter_set {'a','d','F','s','T'}; //枚举常量不能是字符常量
enum year_set{2000,2001,2002,2003,2004,2005}; //枚举常量不能是整型常量
使用:

week枚举来举例:

week weekday1, weekday2;    //定义了两个枚举类型
weekday1 = Sun;    //将枚举常量值赋给枚举变量
weekday2 = weekday2;    //相同类型的枚举变量赋值,weekday2的值为Sun
if(weekday1 == weekday2) cout << "相等";    //允许的关系运算有:==、<、>、<=、>=、!=等
cout << weekday2;    //可直接输出,输出的结果是变量的整数值,即 0 
实例:

还是使用week来举例:

#include <iostream>
using namespace std;

enum Week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int main() {
    Week weekday;
    weekday = Sun;

    switch (weekday) {
        case Sun:
            cout << "星期日";
            break;
        case Mon:
            cout << "星期一";
            break;
        case Tue:
            cout << "星期二";
            break;
        case Wed:
            cout << "星期三";
            break;
        case Thu:
            cout << "星期四";
            break;
        case Fri:
            cout << "星期五";
            break;
        case Sat:
            cout << "星期六";
            break;
        default:
            cout << "无效的星期";
            break;
    }
    return 0;
}

//以下代码是强类型枚举,主要作用就是避免命名冲突
enum class Week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

int main() {
    Week weekday = Week::Sun;

    switch (weekday) {
        case Week::Sun:
            cout << "星期日";
            break;
        case Week::Mon:
            cout << "星期一";
            break;
        case Week::Tue:
            cout << "星期二";
            break;
        case Week::Wed:
            cout << "星期三";
            break;
        case Week::Thu:
            cout << "星期四";
            break;
        case Week::Fri:
            cout << "星期五";
            break;
        case Week::Sat:
            cout << "星期六";
            break;
        default:
            cout << "无效的星期";
            break;
    }
    return 0;
}
一些常见问题:
  • 初始化时可以赋负数,以后的标识符仍依次加1;
  • 枚举变量只能取枚举说明结构中的某个标识符常量;
  • 在外部,可以对枚举变量进行赋值,但需要进行类型转换;
  • 未区分范围的枚举常数可以隐式转换为int,但是int不可以隐式转换为枚举值;
  • 将为枚举中的每个名称分配一个整数值,该值与其在枚举中的顺序相对应,默认情况下,为第一个值分配0,为下一个值分配1,依次类推,但可以显式设置枚举名称的值;
  • 为名称指定的值不必是唯一的,即各枚举常量的值可以重复;
  • 在C语言中,枚举类型名包括关键字enum,在C++中允许不写enum,一般也不写enum,但保留了C的用法;
  • 枚举值可以用来作判断比较;
  • 一个整数不能直接赋给一个枚举变量;
  • 定义的枚举的元素后,在程序运行过程就不能改变。

标签:case,week,常量,Sun,enum,枚举,使用
From: https://blog.csdn.net/m0_60046831/article/details/144943161

相关文章

  • GitHub 基础使用指南
        GitHub是一个流行的代码托管平台,主要用于版本控制和协作开发项目。它为开发者提供了强大的工具来管理项目、追踪问题、以及进行代码审查。    本文将介绍GitHub的一些基础功能,包括镜像站点、导航栏的使用、贡献设置、以及如何寻找特定代码或仓库。1.Gi......
  • WinRAR中“自动加密”如何使用?
    WinRAR加密大家都不陌生,那么自动加密功能大家熟悉嘛?如何使用自动加密功能?今天介绍详细教程给大家。打开WinRAR软件之后选择工具栏中的【选项】,点击设置然后切换到【压缩】选项卡,点击【创建默认配置】,在新弹出的提示框中选择【设置密码】我们在密码设置框内输入密码,进行确......
  • 如何使用Let's Encrypt和Nginx为您的网站提供免费的SSL/TLS证书
    步骤1:安装Certbot和Nginxyuminstall-yepel-releaseyuminstall-ycertbotyuminstallcertbotpython3-certbot-nginx步骤2:配置Nginx以使用域名 #编辑Nginx配置文件sudonano/etc/nginx/conf.d/your_domain#添加以下内容server{listen80;server_name......
  • 【手把手教】使用wireshark抓取omci报文
    引言OMCI协议是GPON标准中G.984.4标准号明确定义的管理接口,它规定了OLT和ONT之间各种消息的编码格式和消息交互过程。在PON产品的研发测试过程中,经常需要抓取omci报文进行分析。然而专业的网络分析仪过于昂贵,工作中通常采取将omci报文镜像到产品LAN口然后通过wireshark抓包。......
  • 你有使用过哪些微前端库呢?你觉得哪个好?为什么?
    在前端开发中,微前端架构正逐渐成为一种流行的选择,它允许将大型的前端应用程序拆分成小型、独立且可协同工作的部分。这种架构提供了诸如团队自治、技术栈多样性、增量更新和独立部署等优势。就我个人而言,虽然我的直接经验可能有限,但我可以根据目前市场上的流行选择和它们的特性来......
  • 使用js写一个方法对css进行压缩
    在前端开发中,对CSS进行压缩通常意味着移除空白字符、换行、注释,以及可能的话,缩短属性和选择器名称。然而,缩短属性和选择器名称可能会导致CSS不可维护,并且可能不兼容某些浏览器,因此这种做法并不常见。更常见的做法是移除不必要的字符,如空格、换行和注释。以下是一个简单的JavaScri......
  • 使用js写一个方法对html进行压缩
    在前端开发中,压缩HTML通常意味着移除多余的空白字符、换行和注释,以减小文件大小并提高加载速度。以下是一个简单的JavaScript函数,用于压缩HTML字符串:functioncompressHTML(html){//移除多余的空白字符(包括空格、制表符和换行符)letcompressed=html.replace(/>\s+<......
  • Java 中的 getDeclaredMethod() 方法:使用与原理详解
    在Java反射机制中,getDeclaredMethod()是一个非常重要的方法,用于获取类中声明的特定方法(包括公共、保护、默认和私有方法)。与getMethod()不同,getDeclaredMethod()可以访问类的所有方法,而不仅仅是公共方法。本文将深入探讨getDeclaredMethod()的使用方法、原理以及实......
  • 在TypeScript中枚举和常量枚举有什么区别?
    在TypeScript中,枚举(Enums)和常量枚举(ConstEnums)都是用于定义一组命名的常量值的数据类型。然而,它们在编译时的行为和使用上存在一些关键差异。1.枚举(Enums)枚举是TypeScript提供的一种特殊的数据类型,它允许我们为一组数值定义友好的名字。默认情况下,枚举中的第一个成员被赋......
  • 使用javascript实现一个EventBus
    在前端开发中,实现一个简单的EventBus可以通过以下方式来完成。这里是一个基本的EventBus类的实现,你可以根据自己的需要进行修改或扩展。classEventBus{constructor(){this.subscribers={};}//注册事件subscribe(event,callback){......