枚举类的赋值和基本操作

2023-05-16

枚举类型的定义

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

定义格式:枚举类型的定义格式为:
    enum <类型名> {<枚举常量表>};
其中:
  • 关键字enum——指明其后的标识符是一个枚举类型的名字。
  • 枚举常量表——由枚举常量构成。“枚举常量”或称“枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以“,”间隔,且必须各不相同。取值类型与条件表达式相同。

应用举例:
    enum color_set1 {RED, BLUE, WHITE, BLACK}; //定义枚举类型color_set1
    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}; //枚举常量不能是整型常量
    可改为以下形式则定义合法:
        enum letter_set {a, d, F, s, T};
        enum year_set{y2000, y2001, y2002, y2003, y2004, y2005};

枚举变量的使用

定义枚举类型的主要目的是:增加程序的可读性。枚举类型最常见也最有意义的用处之一就是用来描述状态量,这点将在第9章 输入输出流类看到。

定义格式:定义枚举类型之后,就可以定义该枚举类型的变量,如:
    color_set1 color1, color2;
亦可类型与变量同时定义(甚至类型名可省),格式如下:
    enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat} weekday1, weekday2;

相关操作
  • 枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集。
  • 枚举变量占用内存的大小与整型数相同。
  • 枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值。例如,设有定义:
        enum color_set1 {RED, BLUE, WHITE, BLACK} color1, color2;
        enum color_set2 { GREEN, RED, YELLOW, WHITE} color3, color4;
    则允许的赋值操作如下:
        color3=RED;           //将枚举常量值赋给枚举变量
        color4=color3;        //相同类型的枚举变量赋值,color4的值为RED
        int  i=color3;        //将枚举变量赋给整型变量,i的值为1
        int  j=GREEN;         //将枚举常量赋给整型变量,j的值为0
  • 允许的关系运算有:==、<、>、<=、>=、!=等,例如:
        //比较同类型枚举变量color3,color4是否相等
        if (color3==color4) cout<<”相等”;
       //输出的是变量color3与WHITE的比较结果,结果为1
        cout<< color3<WHITE;        
  • 枚举变量可以直接输出,输出的是变量的整数值。例如:
        cout<< color3;         //输出的是color3的整数值,即RED的整数值
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举类的赋值和基本操作 的相关文章

随机推荐

  • win10输入法不显示候选词框解决方法

    win10输入法不显示候选词框解决方法 在Win10使用过程中 xff0c 突然发现自带输入法输入汉字时 xff0c 不显示候选词选择框时 xff0c 不必惊慌 xff0c 根据知乎网友的回答 xff0c 重启一下explorer进程就好
  • Springboot + RabbitMq 消息队列

    前言 一 RabbitMq简介 1 RabbitMq场景应用 xff0c RabbitMq特点 场景应用 以订单系统为例 xff0c 用户下单之后的业务逻辑可能包括 xff1a 生成订单 扣减库存 使用优惠券 增加积分 通知商家用户下单 发
  • freemarker 循环list 并取值

    lt if genders exists gt lt list genders as item gt lt option value 61 34 item businessNo if exists 34 gt item businessNa
  • PC端Windows 登录多个微信实现

    现在很多小伙伴都有好多微信 xff0c 但是电脑普通登录又只能等一个微信号 xff0c 怎么办呢 xff1f xff1f xff1f 别着急 我已经给大家整理好了方法 xff0c 请看下面详细步骤 xff1a 1 首先关闭并退出登录的微信
  • Java 使用注解检验手机号

    手机号校验注解类 package span class hljs keyword com span span class hljs preprocessor command span span class hljs preprocessor
  • Java8 List对象中的属性以逗号分隔转字符串

    List对象中的属性以逗号分隔转字符串 在Java 8中将集合List转变为用逗号分隔的String是非常简单的 xff0c 下面看看是如何做到 我们使用String join 函数 xff0c 给函数传递一个分隔符合一个迭代器 xff0c
  • android 获取sn序列号

    android 获取sn序列号 通过 cmd adb shell getprop 可以查看通过反射可以获取到的设备信息 通过安卓代码获取 span class token class name Class span span class t
  • fatal error LNK1181: 无法打开输入文件“kernel32.lib

    转发网址 xff1a https blog csdn net tang jin2015 article details 52879748 在VS中编译C 43 43 代码时 xff0c 报 xff1a 无法打开kernel32 lib 解决
  • ubuntu18.04 安装 ros 报错 E: Unable to locate package ros-melodic-desktop-full

    ubuntu18 04 安装 ros 报错 E Unable to locate package ros melodic desktop full 按照官网流程出现了这种问题 一般出现这种问题是系统版本和ros版本不匹配 xff0c 但是我
  • 解决pip is configured with locations that require TLS/SSL问题

    python3 7安装 xff0c 解决pip is configured with locations that require TLS SSL问题 1 安装相关依赖 yum install gcc libffi devel zlib o
  • tensorflow 如何共享网络参数

    问题描述 今天想做一个实验 xff0c 需要用到两个网络共享一套参数 初步想来 xff0c 是想利用tensorflow的变量空间和命名空间来实现的 xff0c 就像 1 和 2 中提到的那样 xff0c 后来发现涉及类初始化的关系 xff
  • STL std::sort 源码分析

    转载自http feihu me blog 2014 sgi std sort 最近在看sort源码 xff0c 看到这篇博文很好 xff0c 转发作为记录 xff0c 转载侵权联系我删除 背景 在校期间 xff0c 为了掌握这些排序算法
  • STL vector map遍历失效,顺序容器和关联容器遍历时的erase()注意事项

    1 区别 关联容器 Associative Container xff1a 通过键 key 存储和读取元素的 xff08 vector list deque stack queue heap priority queue slist xff
  • 正向,反向,闪烁流水灯

    单片机 中简单的流水灯问题 include 34 reg52 h 34 void led delay void unsigned char i j for i 61 0 i lt 200 i 43 43 for j 61 0 j lt 22
  • DS18B20温度传感源代码

    本文是对DS18b20传感器 xff0c 驱动代码的编写 include lt reg52 h gt include lt intrins h gt define uint unsigned int define uchar unsigne
  • 归并(合并)排序

    归并排序 xff0c 一种比较排序 xff0c 通过对数组中的元素进行比较得出排序结果 时间复杂度 O nlogn 空间复杂度 O n 43 O logn 排序时间与输入无关 xff0c 最佳情况 xff0c 最坏情况都是如此 稳定 原理
  • 字符串加减计算

    描述 xff1a 通过键盘输入100以内正整数的加 减运算式 xff0c 请编写一个程序输出运算结果字符串 输入字符串的格式为 xff1a 操作数1 运算符 操作数2 xff0c 操作数 与 运算符 之间以一个空格隔开 补充说明 xff1a
  • C/C++中,为什么字符串可以赋值给字符指针变量,单引号和双引号的区别

    本文是通过几篇转帖的文章整理而成的 xff1a http www slyar com blog c quotation marks html http www cnblogs com KingOfFreedom archive 2012 1
  • 操作符优先级全列表,一览表

    在一个表达式中可能包含多个有不同运算符连接起来的 具有不同数据类型的数据对象 xff1b 由于表达式有多种运算 xff0c 不同的运算顺序可能得出不同结果甚至出现错误运算错误 xff0c 因为当表达式中含多种运算时 xff0c 必须按一定顺
  • 枚举类的赋值和基本操作

    枚举类型的定义 枚举类型 enumeration 是C 43 43 中的一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的集合 定义格式 xff1a 枚举类型的定义格式为 xff1a enum lt 类型名 gt lt 枚举常量表