枚举类型是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);
}
同时发现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("你没有选择你喜欢的颜色");
}
下面开始学习指针,是没有接触的新概念。