枚举是一种用户定义的数据类型,它允许为整型常量赋予更有意义的名称。枚举类型提供了一种定义变量可能取值的方式,使代码更加清晰和易于维护。
枚举,也就是把可能得取值一一列举,它允许我们定义一组命名的整数值,而这些值在定义后不能被修改,因此表现出常量的特性。
一.枚举的定义
枚举类型的定义使用enum
关键字,后面跟着枚举类型的名称,以及在大括号{}
中包含的枚举成员(即可能的取值)。每个枚举成员都是一个整型常量。
enum Day//列举星期一二三
{
Mon = 1,
Tues = 2,
Wed = 3
};
枚举中存在日后变量的可能取值,在之后代码中写到的Mon,Tues,Wed会被1,2,3替换;如果没有初始化,枚举中会默认第一个是0,后面变量值一次+1;或者只初始化第一个也是一样,后面的变量值会根据第一个的值一次+1;
二.枚举变量声明
enum Day day = M;
在这个例子中,day
是一个Day
枚举类型的变量,它可以被赋值为Mon
、Tues
或Wed
中的任何一个。
三.使用
1,枚举变量的使用是为了增加代码的可读性和可维护性,它和#define有类似的功能,但是枚举定义的标识符有类型检查,且对变量进行了封装,更加严谨也防止了命名污染(枚举类的作用域被限定在其声明的地方,只能在声明它的作用域内访问枚举成员。这意味着枚举成员的名字不会泄露到包含它的外部作用域,从而避免了命名冲突);同时,enum 在预处理之后不替换,便于调试。
2,枚举变量可以用于赋值、比较和作为函数的参数或返回值,可与switch,case结合使用。
#include <stdio.h>
enum Color { RED, GREEN, BLUE };
void printColor(enum Color color)
{
switch(color)
{
case RED:
printf("Red\n");
break;
case GREEN:
printf("Green\n");
break;
case BLUE:
printf("Blue\n");
break;
}
}
int main()
{
enum Color myColor = GREEN;
printColor(myColor); // 输出: Green
return 0;
}