7.4.1 枚举的定义
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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论