枚举器

枚举器的值自定义与选择

在定义枚举时,可以给任意或所有枚举器明确指定自己的整数值。枚举器的名称必须唯一,但枚举器的值并不要求唯一。除非有特殊原因,否则一般应确保各枚举器的值也是唯一的。

1. 手动指定枚举器的值

从 1 开始编号(推荐做法):

enum Weekday {Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

此时 Monday = 1,后续枚举器自动递增 1,依次为 Tuesday = 2、Wednesday = 3……Sunday = 7。这样更符合日常习惯(如周一对应 1)。

混合指定导致值重复(不推荐):

enum Weekday {Monday = 5, Tuesday = 4, Wednesday, Thursday = 10, Friday = 3, Saturday, Sunday};

各枚举器的实际值推导如下:

枚举器推导过程最终值
Monday手动指定5
Tuesday手动指定4
Wednesday前一项 Tuesday=4,自动 +15
Thursday手动指定10
Friday手动指定3
Saturday前一项 Friday=3,自动 +14
Sunday前一项 Saturday=4,自动 +15

结果:Monday、Wednesday、Sunday 的值都是 5;Tuesday 和 Saturday 的值都是 4。这种重复容易造成逻辑混淆,除非有特殊业务含义(如多个名称映射到同一状态码),否则不建议这样使用。

2. 枚举的适用场景

只要希望变量有限定数量的可能值,就可以使用枚举。例如定义季节:

enum Season {Spring, Summer, Autumn, Windy};

默认 Spring = 0、Summer = 1、Autumn = 2、Windy = 3。

3. 核心要点

规则说明
名称唯一性​同一枚举内枚举器名称不能重复(编译报错)。
值唯一性​枚举器的值可以重复,但一般应避免。
自动递增​未手动赋值的枚举器,取前一项的值 +1;若第一项未赋值,则从 0 开始。
手动赋值​可给任意枚举器指定整数值,后续项从该值继续递增。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注