枚举
枚举顾名思义就是 —— 列举;
把可能的取值逐个列举:
一周有七天:周一~周天可以一一列举
性别:男,女,可以列举
一年12个月也可以一一列举
等等类似情况就可以使用枚举。
枚举类型的定义
enum Day //星期
{
Mon,
Tues,
Wed,
Thur,
Fri;
Sat;
Sun
};
enum Sex //性别
{
Male,
Female
};
enum Color //颜色
{
Red,
Green,
Black
};
上面定义的enum Day
, enum Sex
,enum Color
都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。
枚举常量是有初始值的,默认从0开始,一次递增1。
当然也可以在定义的时候赋初值。
例如:
enum Color //颜色
{
Red = 1,
Green = 3,
Black = 4
};
枚举的优点
- 增加代码的可读性
- 和#define定义的标识符比较,枚举有类型检查,更加严谨
- 防止了命名污染(封装)
- 便于调试
- 使用方便,一次可以定义多个常量
枚举的使用
//枚举类型
enum TYPE
{
ADD = 3, //若赋值必须是整数
SUM,
MUL = 2,
DIV
};
void main()
{
enum TYPE t = ADD;
printf("%d\n", t);
printf("%d %d %d %d\n", ADD, SUM, MUL, DIV); //没赋值的时候就是0 1 2 3
printf("size = %d\n", sizeof(enum TYPE)); //32位平台下,枚举类型的大小为4字节
}