enum变量用在将变量转为数字的时候,比如TRUE
和FALSE
正常的情况下我们是定义为
#define TRUE 1
#define FALSE 0
使用枚举变量可以这么定义
enum BOOL{FALSE,TRUE}a; // a是枚举变量,其值只能是0或者1
if (a == 1)
;
else
;
在数据多的情况下,比如是状态机的状态,数据类型的类型定义,使用enum
比#define
方便
1.枚举变量的定义
和结构体,联合体的定义类似,但是枚举数据成员以,
隔开,最后一个不加逗号
enum (标志符)
{
枚举的数据
};
例如①:
enum Day
{
MON = 1,
TUE = 2,
WED = 3,
THU = 4,
FRI = 5,
SAT = 6,
SUN = 7
};
enum Day day = THU; // 这里day只能是枚举数据中的一个
【实际上枚举变量的值就是个无符号整型数,这里说的只能是枚举数据中的值是指有意义的值,使用的时候基本都定义一个无符号整型变量去匹配枚举变量中的值】
例如②:
enum Day
{
MON = 1,
TUE = 2,
WED = 3,
THU = 4,
FRI = 5,
SAT = 6,
SUN = 7
}a;
例如③:
typedef enum
{
MON = 1,
TUE = 2,
WED = 3,
THU = 4,
FRI = 5,
SAT = 6,
SUN = 7
}DAY;
DAY day = SAT; // 这里day只能是枚举数据中的一个
2.枚举变量的赋值
枚举变量如果在定义的时候没有赋值,默认是从0开始赋值的,例如:
enum Day
{
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
默认MON
是0,TUE
是1,接下去的枚举数据都是加1的
再者,如果是在枚举变量的中间赋值的话,前面的都是从0开始的,而后面的才是从赋值开始计算
enum Day
{
MON,
TUE,
WED = 5,
THU,
FRI,
SAT,
SUN
};
那么MON
为0,TUE
为1,WED
为5,THU
为6之后递加