c语言中的枚举类型

enum(枚举)

枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。定义一个枚举类型,需要使用 enum 关键字,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。

复制代码
enum Day
{
	MON=1,TUE,WED,THU,FRI,SAT,SUN
};
//第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

//1.先定义枚举类型,在定义枚举变量
enum DAY
{
	MON=1,TUE,WED,THU,FRI,SAT,SUN
};
enum DAY day;

//2.定义枚举类型的同时定义枚举变量
enum DAY
{
	MON=1,TUE,WED,THU,FRI,SAT,SUN
}day;

//3.省略枚举名称,直接定义枚举变量
enum 
{
	MON = 1, TUE, WED, THU, FRI, SAT, SUN
}day;

枚举的使用

复制代码
//int main()
//{
//	enum DAY day;
//	day = WED;
//	printf("%d", day);
//	return 0;
//}

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

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

//以下枚举类型不连续,这种枚举无法遍历
enum Day
{
	ENUM_0,
	EUNM_10=10,
	ENUM_11
}day;

int main()
{
	day = ENUM_0;
	printf("ENUM_0的枚举值为%d\n", day);
	day = EUNM_10;
	printf("ENUM_10的枚举值为%d\n", day);
	return 0;
}

枚举在switch中的使用

复制代码
enum color
{
	red=1,green,blue
}favorite_color;

int main()
{
	/*用户输入数字来选择颜色*/
	printf("请输入你最喜欢的颜色:(1.red,2.green,3.blue):");
	scanf("%u", &favorite_color);

	/*输出结果*/
	switch (favorite_color)
	{
	case red:
		printf("你最喜欢的颜色是红色");
		break;
	case green:
		printf("你最喜欢的颜色是绿色");
		break;
	case blue:
		printf("你最喜欢的颜色是蓝色");
		break;
	default:
		printf("你没有选择你喜欢的颜色");
		break;
	}
	return 0;
}

将整数转换为枚举

复制代码
typedef enum day
{
	satueday,
	sunday,
	monday,
	tuesday,
	wednesday,
	thursday,
	friday
}workday;

int main()
{
	int a = 1;
	workday weekend;
	weekend = (workday)a;//类型转换
	printf("weekend:%d", weekend);
	return 0;
}
相关推荐
Lupino26 分钟前
被 React “玩弄”的 24 小时:为了修一个不存在的 Bug,我给大模型送了顿火锅钱
前端·react.js
米丘32 分钟前
了解 Javascript 模块化,更好地掌握 Vite 、Webpack、Rollup 等打包工具
前端
Heo34 分钟前
深入 React19 Diff 算法
前端·javascript·面试
滕青山35 分钟前
个人所得税计算器 在线工具核心JS实现
前端·javascript·vue.js
小怪点点36 分钟前
手写promise
前端·promise
国思RDIF框架1 小时前
RDIFramework.NET Web 敏捷开发框架 V6.3 发布 (.NET8+、Framework 双引擎)
前端
Mintopia1 小时前
如何在有限的时间里,活出几倍的人生
前端
炫饭第一名1 小时前
速通Canvas指北🦮——变形、渐变与阴影篇
前端·javascript·程序员
Neptune11 小时前
让我带你迅速吃透React组件通信:从入门到精通(上篇)
前端·javascript
阿懂在掘金1 小时前
Vue 表单避坑(一):为什么 v-model 绑定对象属性会偷偷修改父组件数据?
前端·vue.js