C语言教程-14_5-枚举
前置知识:
- 常量
枚举的声明和使用
我们有时需要使用一系列相关的常量,使用#define
来逐个定义相对较麻烦,C语言提供了枚举类型
,来声明一系列枚举常量.
声明一个枚举类型
声明一个枚举类型的语法如下:
1 | enum <标识符>{枚举项列表}; |
其中:
- 标识符: 该枚举类型的名称
- 枚举项列表: 用逗号分隔的若干个枚举项,每个枚举项可以有如下2种形式:
- 枚举常量 属性声明符
- 枚举常量 属性声明符 = 常量表达式
作为初学者,我们无需关心属性声明符
,现阶段将他忽略掉即可.
枚举常量
也是一个标识符,他代表了一个具体的枚举常量名.
常量表达式
则必须是一个整数常量表达式,其值应该为int
类型,用于指示对应枚举常量的值.
同样,以上声明仅是声明了一个枚举类型
,我们接下来可以使用该类型来声明若干个变量.
声明枚举的变量
假设我们声明一个枚举类型来用于红绿灯的状态表示:
1 | enum light{RED,YELLOW,GREEN}; |
该枚举可以表示一个信号灯的3种状态,我们接下来使用该枚举类型来"描述"3个信号灯:
1 | enum light{RED,YELLOW,GREEN}; |
同样,我们也可以直接将枚举light的3个枚举常量视为3个整数常量,用于比较:
1 | enum light{RED,YELLOW,GREEN}; |
枚举常量的值
我们在声明枚举的时候,可以为特定的枚举常量
使用一个整数常量表达式
来指定其值.
枚举常量的值遵循如下规则:
-
如果一个枚举常量提供了
=常量表达式
,那么该常量的值即为该表达式的值. -
如果一个枚举常量未提供
=常量表达式
,那么该常量的值为同一枚举中前一枚举项的值再+1. -
特别地,如果
第一个
枚举常量未提供=常量表达式
,那么默认为0. -
如果某个枚举常量由其前一个常量的值+1来指定,并且该值发生了
溢出
或回绕
,那么他将会:- 适当大小的有符号整数类型,且有能力表示其前一个常量的值+1
- 适当大小的无符号整数类型,且有能力表示其前一个常量的值+1
具体的类型选择取决于其前一个常量的类型,如果不存在这样的可以表示新值的类型,则该枚举不正确(?).
我们举个例子即可基本说明:
1 |
|
运行结果:
1 | RED = 0 ORANGE = 3 YELLOW = 4 GREEN = 6 BLUE = 7 PURPLE = 8 |
枚举实际上现在用的不是很多,视情况可以选择使用枚举.
注:以上内容为C99标准,C23起有一些新的内容,参阅cppreference文档.
——WAHAHA 2024.3.5
上一篇:C语言教程-14_4-共用体
下一篇:C语言教程-15_1-动态内存分配
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WAHAHA's blog!
评论