枚举类型介绍及使用

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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值