c++ 枚举类型
Posted tsmeredithh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 枚举类型相关的知识,希望对你有一定的参考价值。
枚举类型 enum
一、枚举类型的定义
枚举类型(enumeration):是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
Enum 枚举类型名 变量值列表;
- enum:关键字,指明其后的标识符是一个枚举类型的名字
- 变量值列表:由枚举常量构成,通常用逗号隔开
【解析】
如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。声明枚举类型用enum开头。
二、枚举类型的应用说明
对枚举元素常按照常量处理,不能对他们赋值
Enum Weekday SUM,MON,TUE,WED,THU,FRI,SAT; //定义枚举类型
SUM=0; //SUM是枚举类型,此语句非法
- 枚举元素具有默认值,依次为:0,1,2,3。。。
声明时可以另行定义枚举元素的值
Enum Weekday SUM=7,MON=1,TUE,WED,THU,FRI,SAT; //后面从TUE依次为23456- 枚举值可以进行关系运算
整数值不能直接赋值给枚举变量,如需将整数值给枚举类型,需要进行强制转换
例题【书上2-11】
【问题描述】
设某次体育比赛的结果有四种可能:WIN,LOSE,TIE,CANCEL,编写程序输出这四种情况
【分析】
比赛结果只有这四种,所以可以使用枚举类型来存放比赛结果
【代码】
#include
using namespace std;enum GameWIN,LOSE,TIE,CANCEL;
int main()
Game gameResult,omit=CANCEL;for (int i = WIN; i <= CANCEL; i++) //隐含类型转换 gameResult = Game(i); //显式类型转换 if (gameResult == omit) cout << endl<<"the game was canceled." << endl; else cout << "the game was played. "; if (gameResult == WIN) cout << "we won!!" << endl; if (gameResult == LOSE) cout << "we lost.." << endl; return 0;
三、枚举类型的应用
例题【书上2-34】
【问题描述】
口袋中有红、黄、蓝、白、黑 5种颜色的球若干,每次从口袋中拿出三个不同颜色,问有多少种取法。
【分析】
由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且i≠j≠k。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的组合并输出。
【代码】
#include<iostream>
using namespace std;
int print(int x) //借助函数输出每种结果
switch (x)
case 0:cout << "RED "; break;
case 1:cout << "YELLOW "; break;
case 2:cout << "BLUE "; break;
case 3:cout << "WHITE "; break;
case 4:cout << "BLACK "; break;
return 0;
int main()
enum color RED, YELLOW, BLUE, WHITE, BLACK ; //定义枚举类型
int i, j, k, n = 0;
for (i = RED; i <= BLACK; i++)
for (j = i + 1; j <= BLACK; j++)
for (k = j + 1; k <= BLACK; k++)
n++;
print(i);
print(j);
print(k);
cout << endl;
cout << "共有" << n << "种";
return 0;
以上是关于c++ 枚举类型的主要内容,如果未能解决你的问题,请参考以下文章
C++中类的一个数据成员是枚举类型,那么它在类中该怎么定义?
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)