c++:enum枚举数据类型(详细举例)

基本概念:

  • 枚举数据类型是一种由程序员定义的数据类型,其合法值是与它们关联的一组命名整数常量;
  • 枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合;
  • 枚举类型的定义格式为:
enum <数据类型名> {<枚举常量表>};

//关键字enum——指明其后的标识符是一个枚举类型的名字;

//枚举常量表——由枚举常量构成。"枚举常量"或称"枚举成员",是以标识符形式表示的整型量,表示枚举类型的取值。各枚举常量之间以","间隔,且必须各不相同,且枚举变量一般是以大写字母表示(或首字母大写);

  • 举例说明:
enum color {RED, BLUE, WHITE, BLACK}; // 定义枚举类型color,4个枚举变量值依次默认为:0,1,2,3
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week;7个枚举变量值依次默认为:0,1,2,3,4,5,6
  • 枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。例如,以下是非法定义: 
enum letter{'a','d','F','s','T'}; //枚举常量不能是字符常量
enum year{2000,2001,2002,2003,2004,2005}; //枚举常量不能是整型常量

应用举例:

创建一个枚举类型数据的变量,并为其赋值:

enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};    //声明枚举类型

week day;  //定义week数据类型的变量, 数据类型名称week,变量名称day

day=Sun;      //为创建的变量day赋值,赋值为Sun

cout<<day<<endl;  //枚举变量可以直接输出,输出结果为0

//声明枚举类型color,并创建枚举类型变量color1, color2

enum color {RED, BLUE, WHITE, BLACK} color1, color2;

 指定的值赋值为枚举变量

enum Colors { red, orange, yellow = 9, green, blue }; //red 将被赋值为 0,orange 将为 1,yellow 将为 9,green 将为 10,blue 将为 11

enum Rooms { livingroom = 1, den, bedroom, kitchen };  //livingroom 被赋值为 1,den 将为 2,bedroom 将为 3,kitchen 将为 4

允许的赋值操作 

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;

 循环遍历输出枚举变量

#include<iostream>
using namespace std;
int main() {
	enum weekday {
		SUN,  
		MON,
		TUE,
		WED,
		THU,
		FRI,
		SAT,  
	};
	cout << SAT << endl;
	for (int day = SUN; day <= SAT; day++) {
		cout << "今天星期 " << day << endl;
	}

	return 0;
}

//将i定义为枚举数据类型输出的写法将报错
for(weekday i = MON; i <= SUN; i++)
{
    cout << i << endl;
}

 输出结果:

 枚举变量的switch用法

#include<iostream>
using namespace std;
enum weekday {
	SUN,
	MON,
	TUE,
	WED,
	THU,
	FRI,
	SAT,
};
int main() {
    int today;
    cin >> today;
    switch (today)
    {
    case SUN:
        cout << "今天星期天"<<endl;
        break;
    case MON:
        cout << "今天星期一" << endl;
        break;
    case TUE:
        cout << "今天星期二" << endl;
        break;
    case WED:
        cout << "今天星期三" << endl;
        break;
    case THU:
        cout << "今天星期四" << endl;
        break;
    case FRI:
        cout << "今天星期五" << endl;
        break;
    case SAT:
        cout << "今天星期六" << endl;
        break;
    default:
        cout << "Invalid selection\n";
    }
	return 0;
}

输出结果:

 使用注意:

  • 枚举变量可以直接输出,但不能直接输入。如:cout >> color3;   //非法
  • 不能直接将常量赋给枚举变量。如:  color1=1; //非法
  • 不同类型的枚举变量之间不能相互赋值。如: color1=color3;  //非法
  • 枚举变量的输入输出一般都采用switch语句将其转换为字符或字符串;枚举类型数据的其他处理也往往应用switch语句,以保证程序的合法性和可读性。
  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值