C++入门教程(八、枚举类型)

35 篇文章 9 订阅

前面教程汇总

第一讲

C++入门教程(一、初步了解)

第二讲

C++入门教程(二、基本数据类型)

第三讲

C++入门教程(三、数组、注释与函数)

第四讲

C++入门教程(四、运算符与表达式)

第五讲

C++入门教程(五、数组与字符串)

第六讲

C++入门教程(六、指针)

第七讲

C++入门教程(七、结构体)

枚举类型

枚举是C语言和C++中的基本数据类型,就是能把可能的取值一一举例。比如:性别、星期、月份,这些情况下就可以使用枚举类型。

枚举类型的定义

枚举类型的语法形式:

enum 枚举名称
{
  枚举元素1;
  枚举元素2;
  ......
  枚举元素n //不带符号
};

枚举类型的定义:

//用枚举举例星期
enum Day //枚举的名称
{
    Mon,
    Tues,
    Wed,     // 枚举星期的所有可能
    Thur,
    Fri,
    Sat,
    Sun
};

以上定义的 enum Day 是枚举类型。
{ } 中的内容是枚举类型的可能取值,也叫枚举常量。
这些可能取值最开始都是默认从0开始,一次递增1。

当然在定义的时候也可以赋初值,例如:

enum Sex //性别
{
	MALE = 5, //男
	FEMALE,  //女
	SECRET  //保密
};

后面的枚举常量是依次递增的,也可以一个一个赋值:

enum Sex //性别
{
	MALE = 5,    //男
	FEMALE = 8,  //女
	SECRET = 9  //保密
};

枚举的优点

代码的简洁性、增加代码的可读性和可维护性。
枚举 enumdefine 对标。
如果不使用枚举,用 #define 定义来为每个可能定义一个别名:

#define MALE
#define FEMALE
#define SECRET

以枚举的方式定义:

enum Sex
{ 
    MALE;
    FEMALE;
    SECRET
};

定义性别时看起来还没什么,如果可能性比较多,比如月份,那代码就比较多且臃肿,如果使用枚举就会很简洁,而且增加代码的可读性和可维护性。
还有就是以枚举类型定义具有一定的意义,可以使用到一些程序中:

enum sex
{
    MALE;
    FEMALE;
    SECRET
};
int main()
{
    enum sex a; // 定义枚举变量
    a = MALE;
    printf("%d",a);
    return 0;
}

#define 定义的标识符比较枚举有类型检查,更加严谨。
防止命名污染,便于调试。
使用方便,一次可以定义多个常量。

枚举的使用

enum Day//用枚举定义星期
{
	Mon = 1,         //初始化为1
	Tues,      
	Wed,
	Thur,
	Fri,
	Sat,
	Sun         
};
int main()
{ 
	printf("%d\n", Mon);
	printf("%d\n", Tues);
	printf("%d\n", Wed);
	printf("%d\n", Thur);
	printf("%d\n", Fri);
	printf("%d\n", Sat);
	printf("%d\n", Sun);
	return 0;
}

遍历枚举类型

在C语言和C++中枚举类型是被当做 int 或者 unsigned int 类型来处理的
所以按照 C 语言和C++规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

例如:

#include <cstdio>
using namespace std;

enum DAY
{
	MON = 1,
	TUE, 
	WED, 
	THU,
	FRI,
	SAT,
	SUN
} day; 
int main()
{
	for (day = MON; day <= SUN; day++)
	{
		printf("枚举元素:%d \n", day);
    }
    return 0;
}

关于枚举还有很多使用场景,需要慢慢体会。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoungGeeker

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值