返回介绍

7.4.1 枚举的定义

发布于 2025-04-11 22:33:03 字数 1562 浏览 0 评论 0 收藏 0

C 语言中,定义枚举的格式为:

enum 枚举名{枚举成员 1, 枚举成员 2, …};

定义结构体需要使用关键字“struct”,定义联合体需要使用关键字“union”,而定义枚举需要使用关键字“enum”。在大括号中是各枚举成员,如有多个,中间使用逗号进行分隔。

下面来定义一个和方向相关的枚举类型 Dir。例如:

enum Dir{UP, DOWN, LEFT, RIGHT};

枚举的类型名为 Dir,大括号内共有 4 个枚举成员 UP、DOWN、LEFT 和 RIGHT。前面提到,枚举成员属于常量,那么,既然是常量,就应该有对应的值,这 4 个枚举成员的值分别是多少呢?

默认情况下,枚举成员是一个整型值,其第一个枚举成员的值为 0,而后续枚举成员的值为其前一个枚举成员的值加 1,即第二个枚举成员的值为 1,第三个枚举成员的值为 2,第四个枚举成员的值为 3,以此类推。我们可以通过 printf 函数来打印输出枚举 Dir 的各成员值,例如:

printf("UP = %d\n", UP);
printf("DOWN = %d\n", DOWN);
printf("LEFT = %d\n", LEFT);
printf("RIGHT = %d\n", RIGHT);

编译运行程序,结果如下:

UP = 0
DOWN = 1
LEFT = 2
RIGHT = 3

读者也许会问,是否能够自己设置枚举成员的值呢?例如让枚举成员 DOWN 的值为 10。

答案是可以的。可以在定义枚举时,自己来给枚举成员设置初始值。例如:

enum Dir{UP, DOWN = 10, LEFT, RIGHT};

在枚举成员 DOWN 的后面使用赋值运算符给它设置初始值为 10。此时,我们再通过 printf 函数来打印一下各枚举成员值的话,会得到如下的结果:

UP = 0
DOWN = 10
LEFT = 11
RIGHT = 12

可见,枚举成员 DOWN 的值的确变成 10 了,但是后面的枚举成员 LEFT 和 RIGHT,它们的值也会跟着变成了 11 和 12。在定义枚举时,如果给枚举成员指定了初始值,则该枚举成员的值就为该初始值,否则它的值就是前一个枚举成员的值加 1,如果没有前一个枚举成员,即该枚举成员是处于首位,则它的值为 0。甚至可以将枚举成员的值设为负整数。例如:

enum Dir{UP = -3, DOWN, LEFT, RIGHT};

将枚举成员 UP 的值设为–3。现在再来打印各枚举成员的值,会得到如下结果:

UP = -3
DOWN = -2
LEFT = -1
RIGHT = 0

最后需要了解的是,由于枚举成员是一个常量,因此,可以将其作为定义数组的长度大小,也可以将其作为一个整型值初始化或赋值给一个整型变量,甚至将其作为表达式的一部分。例如:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。