枚举类型的定义:枚举类型(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

枚举变量可以直接输出,输出的是变量的整数值。例如:

cout<< color3; //输出的是color3的整数值,即RED的整数值1

实例

口袋中有红、黄、蓝、白、黑五种颜色的球若干个,每次从口袋中取三个不同颜色的球,统计并输出所有的取法。

分析:由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且i≠j≠k。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的组合并输出。

实例

#include#includeusingnamespacestd;intmain(){enumcolor_set{red,yellow,blue,white,black};//声明枚举类型colorcolor_setcolor;inti,j,k,counter=0,loop;//counter是累计不同颜色的组合数for(i=red;i<=black;i++){for(j=red;j<=black;j++){if(i!=j){//前两个球颜色不同for(k=red;k<=black;k++)if(k!=i&&k!=j){//第三个球不同于前两个,满足要求counter++;if((counter)%22==0){//每屏显示22行cout<

重要提示

枚举变量可以直接输出,但不能直接输入。如:cout >> color3;   //非法

不能直接将常量赋给枚举变量。如:  color1=1; //非法

不同类型的枚举变量之间不能相互赋值。如: color1=color3;  //非法

枚举变量的输入输出一般都采用switch语句将其转换为字符或字符串;枚举类型数据的其他处理也往往应用switch语句,以保证程序的合法性和可读性。

c++ enum 给定类型_C++ 枚举类型详解相关推荐

  1. java enum 变量_java枚举使用详解

    package com.ljq.test; /** * 枚举用法详解 * * @author jiqinlin * */ public class TestEnum { /** * 普通枚举 * * ...

  2. Java(enum)枚举用法详解

    转载自 Java(enum)枚举用法详解 本篇文章主要介绍了Java 枚举用法详解,枚举的好处:可以将常量组织起来,统一进行管理.有兴趣的可以一起来了解一下. 概念 enum的全称为 enumerat ...

  3. vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用

    VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...

  4. Java--枚举类型(枚举类型介绍 定义枚举类型 枚举类型的使用 枚举类型的注意事项 遍历枚举项)

    01: Java–枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项) 02: Java–枚举类型(枚举类型实现接口 ...

  5. 【C++】(十五)自定义数据类型——共用体类型、枚举类型

    文章目录 自定义数据类型--共用体类型.枚举类型 1 共用体类型 2 枚举类型 3 typedef 自定义数据类型--共用体类型.枚举类型 1 共用体类型 共用体(union)是一种成员共享存储空间的 ...

  6. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  7. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

  8. sip消息类型和消息代码详解-转

    在学习asterisk的时候,经常遇到一些远程服务器传回的代码,这些代码都有很重要的信息,让我们了解到对方的sip是如何响应我们这边的sip消息的,于是网上找到了这些sip消息类型和消息代码,自己收藏 ...

  9. FANUC机器人动作指令的定位类型FINE和CNT详解

    FANUC机器人动作指令的定位类型FINE和CNT详解 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. FANUC机器人的定位类型,即定义动作指令中 ...

最新文章

  1. 2022-2028年中国渣油行业市场研究及前瞻分析报告
  2. 不使用powerdesigner手工绘制用例图例题详解
  3. 怎么复制链接伟html,index.html
  4. Golang —— goroutine(协程)和channel(管道)
  5. [Js/Jquery]jquery插件开发
  6. mpvue外卖小程序
  7. Zookeeper和kafka在linux环境下的安装
  8. 数据结构——树的C语言实现
  9. c语言存储结构的实现,(C语言)栈的链式存储结构的实现
  10. ios 按钮图片拉伸_#UIButton#背景图片的拉伸
  11. Linux流量监控工具 - iftop
  12. 漂亮的代码6:增加字符串后的数字
  13. OpenCV-基本图形绘制(圆、矩形、椭圆)
  14. 文强+光裕+唐骏,告诉我们什么?
  15. java工程package红叉_Java程序中没有错,项目上面显示一个红叉的解决办法
  16. 数据库--开发一个房产信息系统实现居民房产信息管理
  17. 为什么现在微信附近人“没人”了
  18. cif t t操作流程图_cif流程(cif贸易术语流程图)
  19. C#开发中三层架构BLL,DAL还有IBLL和IDAL接口,请问为什么要定义接口?有什么用啊?
  20. java不使用科学计数法_java不用科学计数法

热门文章

  1. php5.3之后如何加载zend
  2. [CLR via C#]4. 类型基础及类型、对象、栈和堆运行时的相互联系
  3. 【转载】Linux等类Unix系统学习用书那点事儿!
  4. CVE-2016-1240 Tomcat 服务本地提权漏洞
  5. 一个程序猿的生命周期
  6. Linux之watch命令
  7. Google 的三篇论文
  8. python全栈开发 * 04 * 180604
  9. 算法笔记_167:算法提高 矩阵翻转(Java)
  10. 手把手教你通过Eclipse工程配置调用JNI完全攻略