c语言枚举类型enum怎么用

本文小编为大家详细介绍“c语言枚举类型enum怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c语言枚举类型enum怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、枚举的概念

我对枚举的理解是把一些固定的值一一列举出来分别起个名字,比如说给1取个名字叫Ture, 0取个名字叫False。

Ture和false都是一种表示同一个类型的数据,比如说都是代表逻辑的对错。

我们模拟51单片机的IE中断使能寄存器每个位的值来举一个例子。

我们可以对照单片机寄存器芯片资料一下,当我们设置IE寄存器的值等于0x01的时候,代表开启外部中断0,设置成0x80的时候允许全部中断。

这些枚举值都是针对寄存器IE的固定值,所以我们可以称这些值是同一个类型的数据,我们把他们重新命名一下,便于阅读和记忆,这就是枚举的重要作用之一。

二、枚举的几种用法

1.直接定义枚举值,然后给普通变量赋值。

上面这个代码呢,定义了一个枚举类型,但是没有给枚举类型命名。

像这种枚举呢就是没办法定义枚举变量的,但是呢,这样其实也是可以用的。

我们通过定义一个普通变量,然后把枚举的值赋给他,一样也能输出正确的值,这种方法我个人经常偷懒地用。

2.定义带名称的枚举

这里定义了一个名字为WeekDay的枚举,那么我们就可以通过这个枚举类型定义一个名为day的枚举变量。

三、定义枚举别名

这个代码中通过typedef来定义枚举的别名为WeekDay,然后我们直接使用WeekDay day来定义一个enum变量,这种方法用的是最多的

四、枚举有什么用,用在哪里?

上面我们已经学习了枚举的一些定义方法,那么枚举到底在产品当中有什么用呢?

枚举的作用:

1.为固定的值命名,当作数组访问的下标,当固定的数据很多时,比如有几十上百个,那么如果你应0-100去表示就很难记住每个值代表什么意思。

比如说之前做过汽车故障诊断的产品,需要读取Pid数据存储到数组里,而PID有将近100个。

如果让你去记这100个每个代表哪个PID参数,估计你会崩溃。

而我把每个PID参数通过枚举另起一个一看就知道是什么参数的名字,是不是就方便很多?

因为每个PID都单独存储在数组的一个元素里,那我用这个名字作为下标能很快速地把指定PID参数从数组取出来。

看上图用枚举和不用枚举读取的区别相信你就能理解了。

2.可以作为一个变量,灵活分配数组大小。

我们在定义数组的时候,直接用该枚举类型的最后一个值作为数组大小。

下次要增加或者减少PID参数的时候就不用去改数组大小了,非常方便。

3.枚举作为设置值

上图是STM32的固件库代码,配置GPIO模式的枚举定义。

我们可以看到,每一个枚举值都代表着一个模式,最后通过把这些值写入相应寄存器,最终完成GPIO的模式配置。

读到这里,这篇“c语言枚举类型enum怎么用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注本站行业资讯频道。

相关推荐:

如何让枚举类(Enum)正确实现 typing.Protocol?

本文详解如何使Enum类型满足Protocol的结构约束,核心在于将协议成员声明为只读属性,并为枚举成员显式标注ClassVar,从而通过Pyright和Mypy的严格类型检查。 本文详解如何使`enum`类型满足`protocol`的结构约束,核心在于将协议成员声明为只读属性,并为枚举成员显式标注...

如何让枚举类(Enum)正确匹配 typing.Protocol?

本文详解如何通过@property、classvar和类型协议设计,使自定义enum类满足protocol约束,解决pyright/mypy报错“type[myenum]cannotbeassignedtomyproto”的核心问题。 本文详解如何通过@property、classvar和类型协议设...

Python enum 的高级用法与扩展

enum严格区分name(标识符)和value(任意对象),str(e)显示name而非value;序列化需处理value;避免继承str/int,改用@property;intenum/flag重载运算符,非语法糖;反查枚举优先用构造函数或try/except。 Enum成员值不是字符串时,nam...

Python 使用 Enum 替代魔法数字的实践

enum的本质是类型安全开关而非高级常量,核心在于运行时与类型检查器协同拦截非法值,必须用枚举成员赋值、显式转换、避免继承数值类型,并在序列化/反序列化及测试中严守边界校验。 为什么Enum不是“更高级的常量”,而是类型安全开关 用Enum替代魔法数字,核心不是为了“看起来整洁”,而是让Python...

mysql+c语言+API如何访问数据库

小编给大家分享一下mysql+c语言+API如何访问数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  #include <winsock2.h> #include &quot...

C语言怎么实现贪吃蛇小游戏程序

这篇文章主要介绍“C语言怎么实现贪吃蛇小游戏程序”,在日常操作中,相信很多人在C语言怎么实现贪吃蛇小游戏程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现贪吃蛇小游戏程序”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!代码如下:#include&nbs...

如何用C语言制作贪吃蛇游戏

小编给大家分享一下如何用C语言制作贪吃蛇游戏,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!这是一个纯C语言写的贪吃蛇游戏,供大家参考,具体内容如下#include<stdio.h> #include<stdlib.h> #include<windows...

【C语言小游戏】 贪吃蛇

windows编译运行源代码:/*这是一个贪吃蛇代码,运行环境VC++6.0(亲测完美运行)*/ /*该程序在dos系统下运行,不需要graphics.h头文件*/ #include <windows.h> #include <stdlib.h> #inc...