欢迎光临散文网 会员登陆 & 注册

第 22 讲:枚举

2021-10-04 03:21 作者:SunnieShine  | 我要投稿

前文解决了两种需要带关键字的自定义类型:结构体和共用体,它们的用法也是各有各的好处和奇特之处。今天我们来看一种新的带关键字的类型:枚举类型(Enumerations)。

什么是枚举类型?

枚举类型一般用于列举一些特殊情况时,特别这些情况的范围仅仅只有可以数出来的几种情况的时候,我们就可以使用这种类型,例如星期。

我们可以使用枚举类型为星期定义一个枚举类型,写法是这样的:

我们把枚举的每一个数值放到枚举的大括号里,然后把每一个枚举数值写进去就可以了。枚举类型一般是需要对应数值使用的,否则我们无法做到灵活使用枚举的效果。所以我们一般都会配合整数使用,为每一个枚举数值赋一个整数值;当然,如果不赋值,那么从第一个元素开始,就以 0 为起始点开始往下顺序默认赋值;如果为其某一个数值赋值,那么后面的元素不赋值也可以得到默认数值,这些数值就从赋值的数值开始自动递增 1 个单位。

这个写法等价于前者。

当然,如果 monday 字段不赋值的话,那么整体就会从 0 开始计算,即 monday 赋值为 0、tuesday 赋值为 1、wednesday 赋值为 2,等等。


使用

枚举类型出乎意料得好用。为什么这么说呢?因为枚举类型一般都不会用类型名称(即这里的 enum week,当然有时候也可以用上),而大多直接把里面的数值代入到指定位置上去就完成了使用。比如:

从代码里可以发现,每一个 case 标签处跟的直接是枚举字段,而且不需要使用成员访问运算符这种奇怪的东西,也不需要类型名称来作为辅助操作。

实际上,我们也可以从这种角度认为,bool 是一种枚举类型,因为它的声明语句可以是这样的。

这样 false 字段就赋值为 0,而 true 自动赋值为 1。


枚举类型的内存大小

当然,bool 类型并不是这么简单,因为 bool 仅仅占据一个字节,而枚举类型需要整数的依托,所以枚举类型的大小一般是 4 个字节(即 int 占据多大,枚举就多大)。


第 22 讲:枚举的评论 (共 条)

分享到微博请遵守国家法律