C语言学习之路--第五站 enum 枚举类型

41 阅读2分钟

枚举类型是C语言中一种基本数据类型,用于定义一组具有离散值得常量。

浅显的理解是可以代替java和python中循环写入加一的数组。在C中,枚举被视为 int 或 unsigned int 类型。

定义一个枚举类型

  • 需要用到 enum 关键词
  • 后续成员比前成员多一
  • 未定义时第一成员默认为0
  • 指定某成员值后,后续加一
  • enum 枚举名 {枚举元素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 enum_demo()
{


enum DAY {
	MON=1 , TUE ,WED , THU , FRI , SAT , SUN
};
enum DAY day;
day = WED;
printf("day:%d\n", day);

enum DAY1 {
	MON1=5 , TUE1, WED1, THU1, FRI1, SAT1, SUN1
} day1 ;
for (day1 = MON1; day1 <= SUN1; day1++)
{
	printf("枚举遍历测试:%d\n", day1);

}

enum DAY2 {
	MON2 = 1, TUE2, WED2, THU2=6, FRI2, SAT2, SUN2
} day2;
printf("枚举遍历测试:%d\n", day2=MON2);
printf("枚举遍历测试:%d\n", day2=TUE2);
printf("枚举遍历测试:%d\n", day2=WED2);
printf("枚举遍历测试:%d\n", day2=THU2);
printf("枚举遍历测试:%d\n", day2=FRI2);
printf("枚举遍历测试:%d\n", day2=SAT2);

int a = 29;
day2 = (enum day2)a;//类型转换
printf("枚举遍历测试:%d\n", day2);
}

image.png

同时发现C语言中类型转换的方式( int ) a

枚举也适合用在 switch 中:

	enum color { red = 1, green, blue };
enum  color favorite_color;
favorite_color = (enum color)2;
switch (favorite_color)
{
case red:
	printf("你喜欢的颜色是红色");
	break;
case green:
	printf("你喜欢的颜色是绿色");
	break;
case blue:
	printf("你喜欢的颜色是蓝色");
	break;
default:
	printf("你没有选择你喜欢的颜色");
}

下面开始学习指针,是没有接触的新概念。