【C】一篇文章搞懂C语言的自定义类型之枚举的入门到入坟

自定义类型

自定义类型一共只有三种:
1.结构体类型
2.枚举类型
3.联合类型

枚举类型

  • 如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓“枚举”就是把可能的值 一 一 列举出来,变量的值只限于列举出来的值得范围内
  • 声明枚举类型用enum开头

枚举类型的声明与定义

枚举类型的声明:
enum Weekday{	
	sun,	//周日
	mon,	//周一
	tue,	//周二
	wed,	//周三
	thu,	//周四
	fri,	//周五
	sat		//周六
};
enum sex{
	male,
	female
};

定义变量:
enum Weekday workday,weekend;	//定义两个Weekday类型的枚举变量
enum sex human;		//定义一个sex类型的枚举变量

以上定义的enum Weekday , enum sex都是枚举类型
{ }中的内容是枚举类型的可能取值,也叫枚举常量
这些可能值都是可以赋值的,默认赋值是从0开始,以1递增,在定义时可以赋值

enum sex{
	male,
	female
};
	enum sex s1 = male;
	enum sex s2 = female;
	printf("%d %d\n", s1, s2);	// 0 1
enum sex{
	male,
	female = 3
};
	enum sex s1 = male;
	enum sex s2 = female;
	printf("%d %d\n", s1, s2);	//0 3
enum sex{
	male = 4,
	female 
};
	enum sex s1 = male;
	enum sex s2 = female;
	printf("%d %d\n", s1, s2);	//4 5
不建议这种赋值,会导致编译器分不清male和female
enum sex{
	male ,
	female = 0
};
	enum sex s1 = male;
	enum sex s2 = female;
	printf("%d %d\n", s1, s2);	//0 0

枚举的优点

#define也可以定义常量,为什么我们要使用枚举来定义常量?
枚举优点:
1.增加代码的可读性和可维护性
2.枚举有类型检查,更加严谨
3.防止命名污染(封装性)
4.使用方便,一次性可以定义多个常量

枚举的使用

enum Color{
	RED = 1,
	GREEN = 3,
	BLUE = 5
};
	enum Color color1 = RED;	//合法,定义并初始化枚举常量
	color1 = 5;		//非法,错误信息: 无法从“int”转换为“sex”

由上述测试代码可知,枚举类型变量的值只能是枚举类型中的值,不可以是其他任何值

猜你喜欢

转载自blog.csdn.net/weixin_45437022/article/details/106981748