在C语言中,enum
(枚举)是一种用户自定义的数据类型,它允许程序员为一组整数值赋予有意义的名字,从而提高代码的可读性和可维护性,枚举类型的主要作用是将一组相关的整数值表示为一个变量,这样可以使代码更加简洁、易于理解。
枚举类型的定义和使用如下:
1、定义枚举类型
要定义一个枚举类型,需要使用关键字enum
,后面跟着枚举类型的名称和一组用大括号括起来的枚举常量,定义一个表示星期的枚举类型:
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
这里,Weekday
是枚举类型的名称,MONDAY
到SUNDAY
是枚举常量,注意,枚举常量的命名规则与变量相同,但通常使用大写字母表示。
2、声明枚举变量
声明枚举变量的方法与声明其他基本数据类型的变量相同,声明一个Weekday
类型的变量:
enum Weekday today;
3、赋值给枚举变量
将整数值赋给枚举变量时,可以直接使用枚举常量的名称,将today
变量的值设置为MONDAY
:
today = MONDAY;
4、使用枚举变量
可以使用枚举变量进行比较、算术运算等操作,判断today
变量是否为工作日:
if (today >= MONDAY && today <= FRIDAY) {
printf("Today is a workday.
");
} else {
printf("Today is a weekend or holiday.
");
}
5、遍历枚举类型
可以使用switch
语句遍历枚举类型,打印一周内的每一天:
switch (today) {
case MONDAY:
printf("Monday
");
break;
case TUESDAY:
printf("Tuesday
");
break;
case WEDNESDAY:
printf("Wednesday
");
break;
case THURSDAY:
printf("Thursday
");
break;
case FRIDAY:
printf("Friday
");
break;
case SATURDAY:
printf("Saturday
");
break;
case SUNDAY:
printf("Sunday
");
break;
default:
printf("Invalid day
");
}
6、枚举类型的优缺点
优点:提高代码的可读性和可维护性;使代码更加简洁、易于理解。
缺点:枚举类型的大小固定,不能动态分配内存;枚举类型不能直接用于数组、结构体等复合数据类型。