1.枚举
enum Color {
RED,
GREEN,
BLUE
};
Color favoriteColor = GREEN; // 声明一个枚举变量并赋值
特点:
1.枚举值默认从0开始,也可以手动指定值
enum Day {
MONDAY = 1,
TUESDAY, // 值为 2
WEDNESDAY, // 值为 3
THURSDAY = 10,
FRIDAY, // 值为 11
SATURDAY, // 值为 12
SUNDAY = 20 // 手动指定值
};
2.在底层为整数->可以与整数进行比较
enum Level {
LOW,
MEDIUM,
HIGH
};
Level currentLevel = MEDIUM;
if (currentLevel == 1) { // 等价于 currentLevel == MEDIUM
// 执行某些操作
}
2.强类型枚举(c++11)
原因:避免了与整数或其他枚举值的隐式转换,同时改善了作用域。
enum class Direction {
NORTH,
SOUTH,
EAST,
WEST
};
Direction dir = Direction::NORTH;
if (dir == Direction::NORTH) {
// 执行某些操作
}
3.枚举的其他用法
1.使用 typedef
为枚举类型取别名,简化使用
typedef enum {
SMALL,
MEDIUM,
LARGE
} Size;
Size tshirtSize = MEDIUM;
2.用于位标志(重要!)
enum FilePermission {
READ = 1, // 001
WRITE = 2, // 010
EXECUTE = 4 // 100
};
int permissions = READ | WRITE; // 设置权限为读写
if (permissions & READ) {
// 检查是否有读权限
}
READ,WRITE,EXECUTE都为单标志位,当permission与这三个单标志位相&时,只用考虑相&的标志位,其他标志位均为0。
例如permission=READ|WRITE后,为011,与READ相&是,前两位一定为00,读标志位permission为1,READ为1,所以if判定当前权限可以读,为1,即为true。