写点什么

【C 语言】enum 枚举类型

作者:謓泽
  • 2022-11-12
    江西
  • 本文字数:1989 字

    阅读完需:约 7 分钟

【C语言】enum 枚举类型

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

🏅2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP 创作者(创作新人榜 No.10)~[CSDN]周榜 334﹣总榜 925 ⇿ 全网访问量 40w+🏅

🆔本文由 謓泽 原创 发布在 InfoQ 如需转载还请通知⚠

📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

⑩① enum ⇿ 枚举类型

⒈描述⇢声明外部变量和函数是一种基本 数据类型,它可以让数据更简洁,更易读。

定义-enum    枚举名    {枚举元素 1,枚举元素 2,……};

⒉注意⇢第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

⒊作用⇢枚举类型枚举的是一堆的常量,它和结构体和联合体都是不一样的。结构体和联合体所定义的都是一些变量的值,而枚举的内部存储的都是常量。常量与常量之间使用逗号(,)来进行隔开的,内部的这些常量都是可以当中数据来进行使用的。

如下代码示例①👇

#include<stdio.h>enum color{	//枚举常量	black,	white,	gules,};int main(void){	printf("%d\n", black);	printf("%d\n", white);	printf("%d\n", gules);	return 0;}
复制代码

运行结果🖊

0

1

🍊拓展⇢当然枚举也是可以列举在我们生活当中的,例如:三原色、一个星期是多少天,一年有多少月份。这些都是可以采用枚举类型进行一一列举的。

🍈说明⇢实际上枚举常量是可以进行赋初值的。

如下代码示例②👇

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>enum color{	//枚举常量,进行赋初值。	black = 2,	white = 4,	gules = 6,};int main(void){	printf("%d\n", black);	printf("%d\n", white);	printf("%d\n", gules);	return 0;}
复制代码

运行结果🖊

2

6  

🍎枚举变量的定义如下👇

(一) 先定义枚举类型,再定义枚举变量

enum Color{      red = 1,orange,yellow,green,cyan,blue,purple};enum Color seven;
复制代码

(二) 定义枚举类型的同时定义枚举变量

enum Color{      red = 1,orange,yellow,green,cyan,blue,purple} seven;
复制代码

(三) 省略枚举名称,直接定义枚举变量 

enum {      red = 1,orange,yellow,green,cyan,blue,purple} seven;
复制代码

✔枚举的优点 

我们可以使用 #define 宏定义常量,为什么还需要用到枚举,来说说枚举的优点↓

  1. 增加代码的可读性和可维护性。

  2. 和 #define 相比定义的标识符比较枚举有类型的检查,更加具有严谨性。

  3. 便于程序当中调试。

  4. 使用比较方便,依次就可以定义多个枚举常量。

  5. 封装性好。

🍋说明⇢在 switch case 的有些场景下是可以配合 枚举常量来进行使用的。 

如下代码示例③👇

#include<stdio.h>enum Number{	Exit,};int main(void){	int num = 0;    printf("Please input num value:");	scanf("%d", &num);	switch (num)	{		case Exit:printf("退出exit!");break;	}	return 0;}
复制代码

运行结果🖊

Please input num value:0

退出 exit!

📝ENUM 知识点

①问:ENUM 本质上是啥子?

答:本质上是定义制作一组强相关性的常量颜色枚举常量那么它都是同一类型的常量。

②问:为什么我不可以直接去定义,还需要用枚举,这不是多此一举吗?

答:结论你最终用所谓的整形或者是用所谓的枚举,当然这个实际上在 C 的编译器都是可以支持的。程序员之所以用枚举常量定义有两个原因:①专业的技术做专业的事情,这里当然指的是枚举。

#include<stdio.h>enum color{	black,	white,	red}a;int main(void){	a = red;//a充当的是枚举变量颜色(拥有自说明性:写代码的人一下看的懂)	printf("%d %d",a,red);	return 0;}//运行结果:2 2
复制代码

📝说明⇢如上代码说明:枚举的代码具有自描述性,不用对代码进行过多的解释。

🎁拓展知识点↔枚常量不多且没有上面相关性可以使用宏定义,反之用枚举。

枚举的用处🥂

说明-示例代码如下👇

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>typedef enum  //创建结构体类型{	Monday = 1,//结构体类型的成员变量	Tuesday = 2,	Wednesday = 3,	Thursday = 4,	Friday = 5,	Saturday = 6,	Sunday = 7,}Week;//重命名枚举类型int main(void){	Week week = 0;//创建枚举变量	scanf_s("%d", &week);	switch (week)	{		case Monday:printf("星期一"); break;		case Tuesday:printf("星期二"); break;		case Wednesday:printf("星期三"); break;		case Thursday:printf("星期四"); break;		case Friday:printf("星期五"); break;		case Saturday:printf("星期六"); break;		case Sunday:printf("星期日"); break;		default:printf("input Week error!"); break;	}	return 0;}
复制代码

运行结果🖋

6

星期六

发布于: 刚刚阅读数: 4
用户头像

謓泽

关注

一句话介绍下自己~ 2022-01-29 加入

谁也不知道旅途的终点是怎么样的 现在只不过是刚启航⛳ 便要全力以赴!终点必将是星辰🌠大海🌊 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
【C语言】enum 枚举类型_11月月更_謓泽_InfoQ写作社区