枚举类型的使用

枚举是一种自定义类型,用于列举可能的值,如星期和月份。枚举提供代码的可读性和可维护性,并具有类型检查功能,优于宏定义。在C语言中,枚举可以定义并初始化,枚举常量默认从0开始递增,但可以指定初始值。枚举的使用不仅限于赋值,还有更多灵活的应用。
摘要由CSDN通过智能技术生成

1.枚举

之前我们我们学了关于结构体的知识,这里我们今天讲的枚举类型其实也是属于自定义类型的其中之一。既然都是属于同一种类型,避免不了枚举和结构体是由一些相似之处的,在这里我的建议是先了解结构体在来了解枚举会相对比较简单的学会枚举类型,在这里可以到我的知识库里面的结构体讲解里面去详细了解一下自定义类型。

1.1枚举类型的定义

所谓枚举就是一一列举的意思,像我们生活中的列举出星期,月份一样。它是由用户在程序中自行定义的。枚举是个类型,可以通过类型常见变量,而枚举创建这个变量的可能取值就在大括号里面,枚举的应用场景一般是把可以一一列举出来的定义成枚举类型,然后创建枚举类型的变量。
其定义的格式:

enum <枚举类型名> 
{
	枚举成员
};

注意:这里同样在最后不能丢掉了分号。

enum Ses
{
	MALE,
	FEMALE,
	SECRET
};

在上面我们定义了一个枚举类型Ses,而打括号里面的就是枚举的可能取值。所以我们在给其赋值的时候只能赋值所给的可能取值。
就比如

enum Ses s=MALE;

这里要注意了,每个可能取值是用逗号隔开的。
这里的MALE就是枚举的可能取值之一。
而枚举的可能取值其实是常量,也叫枚举常量。
这里我们可以看一下他们的值分别是多少
在这里插入图片描述
这里我们看到了这里的第一个枚举常量默认是0,之后就一次往下递增。但是有时候你总会发现他可能不是我们想要的值,也就是说这里的默认值不合适,所以这里其实是可以更变得。
在这里插入图片描述
哪有的小伙伴就会问了,这里明明是枚举常量怎么可以改呢,在这里这里其实不是改,而是赋值上一个初始值,你可以类比一下const int a=10这里a被const修饰了,说明他是不可修改的,但是还是可以个a赋值上一个初始值的。
在上面的两个代码里面我们可以看到 MALE=2(第一个),FEMALE=2(第二个)所以我们我们可不可以直接enum Sex s=2这样写呢,可以看出我们编译出来了,那是不是就说明可以这样写呢?答案是否定的,这里的s他的类型是枚举类型的,而2的类型是int类型的,他们的类型不兼容会出现语法错误,那为什么这里可以编译过去呢?其实编译器对语法检查不是很严格。

1.2枚举的优点

既然枚举可以一一列举出想要的可能值,那其实也可以用另外一种写法——宏定义。
我们可以直接用宏定义来定义我们想要的可能取值:

#define MALE 0
#define FEMALE 1
#define SECRET 2

这样子不是也可以吗,如果从可执行代码这方面来讲的确是可以的,但是从优越性来讲的话enum枚举类型是更好的。
枚举类型有以下几个优点:

1:增加代码的可读性和可维护性。
2:和#define定义的标识符比较枚举由类型的检查,更加的严谨, #define定义的只是一个符号,但是用枚
举的时候是有类型的
3:防止匿名污染(匿名冲突)
4:便于调试。
5:使用方法,一次可以定义多个常量。

1.3枚举的使用

我们来简单的是使用一下枚举:

enum color
{
	RED = 1,
	GREEN=2,
	BLUE=4
};
int main()
{
	enum color clr = GREEN;//只拿到枚举常量给枚举变量赋值,才不会出现类型的差异
	clr = 5;
	printf("%d\n",clr);
	return 0;
}

当然枚举的使用可不是像这样的,他的使用其实是很灵活的,这里就不多讲了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

初阳hacker

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值