C语言自定义类型变量——枚举(enum)

本文介绍了C语言中的枚举类型,包括其定义方式、枚举常量的使用规则,以及枚举相对于#define的优越性,如类型检查、可读性和多变量定义的简洁性。
摘要由CSDN通过智能技术生成

一.枚举的定义和声明

字面意思,枚举就是一一列举,把可能的取值一一列举,在我们现实生活中有许多可以列举的事物,例如:一周七天,一年四季,性别,月份,三原色等等。当我们需要描述这些数据的时候就可以使用枚举了。其关键字为eunm.

类似于结构体,联合体,定义一个枚举类型的基本形式如下:

enum 枚举名

{

        枚举常量1,

        枚举常量2,

        //...

        枚举常量n
};

 例如:枚举一星期七天

enum Day//星期
{
	Mon,
	Tues,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
};

以上定义的 enum Day 就是一种枚举类型。 { }中的内容是枚举类型的可能取值,也叫枚举常量 。这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也是可以赋初值的。(后面的值也是顺次加1的)

enum Color
{
	RED,//0
	GREEN,//1
	BLUE//2
};
	
int main()
{
	//enum Color cl = RED;
	//RED=5//err
	printf("%d\n", RED);
	printf("%d\n", GREEN);
	printf("%d\n", BLUE);
	return 0;
}

注意:对于enum中的枚举常量在使用的时候是不可以再次赋值的,因为它是一个常量值 ,只能在初始化的时候修改默认值。

二.枚举类型的优点

通过枚举的定义我们会发现它与#define效果很类似,那我们为什么非要使用枚举?

枚举的优点:

#define相对来说更加简单粗暴,就是将所有的符号替换为设定值,并且作用域是全局的,而对于枚举变量中的枚举常量,编译器会将它视作一种变量类型,更加严谨,并且只能在函数内部使用,作用范围更精确。我简单举两个案例直观感受一下enum的好处与用途:

eg1:枚举的类型检查

enum Color//颜⾊
{
 RED=1,
 GREEN=2,
 BLUE=4
};
enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
enum Color clr = 2//err(c++中)

eg2: 枚举的可读性

下面是一个简易计算器实现,其中使用enum会将数字替换成名称,增加代码可读性,更加直观。

void menu()
{
	printf("**************************************");
	printf("******1.Add      2.Sub****************");
	printf("******3.Mul      4.Div****************");
	printf("***********0.Exit*********************");
	printf("**************************************");
}

eunm
{
	Exit,//0
	Add,//1
	Sub,//2
	Mul,//3
	Div//4
}
int main()
{
	int input = 0;
	printf("请输入->");
	scanf("%d", &input);
	switch (input)
	{
	case Add://1
			//Add();
			break;
	case Sub://2
			//Sub();
			break;
	case Mul://3
			//Mul();
			break;
	case Div://4
			//Dix();
			break;
	case Exit://0
			//Exit()
			break;
	default:
				break;
	}
	return 0;
}

eg3:枚举一次性定义多个变量,相较于#define更加简洁明了。

enum Color
{
	RED=,//0
	GREEN,//1
	BLUE//2
};

#define RED 0
#define GREEN 1
#define BLUE 2

以上便是对C语言自定义类型变量的最后一种——枚举的简要介绍,望屏幕前的你能有所收获! 

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值