zl程序教程

您现在的位置是:首页 >  Java

当前栏目

【C语言】enum 关键字

2023-02-18 16:23:34 时间

?write in front?    ?大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流? ?2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量35w+? ?本文由 謓泽 原创 CSDN首发?如需转载还请通知⚠ ?个人主页-謓泽的博客_CSDN博客 ? ?欢迎各位→点赞? + 收藏⭐️ + 留言?​ ?系列专栏-【C语言】关键字_謓泽的博客-CSDN博客? ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本?

⑩① 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 2  ?拓展⇢当然枚举也是可以列举在我们生活当中的,例如:三原色、一个星期是多少天,一年有多少月份。这些都是可以采用枚举类型进行一一列举的。 ?说明⇢实际上枚举常量是可以进行赋初值的。 如下代码示例②?

#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 4  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 星期六