0
点赞
收藏
分享

微信扫一扫

c++枚举

C++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。

enum spect {red,orange,yellow,green,blue};

spect是枚举类型名,red,orange等的值是0到4。

//声明

spect band;

//赋值,赋值的内容需要是枚举中定义的

band = orange;

//枚举中的值可以当做数字。

int color = red; //0
color = 3 + red; //3

枚举更常被用来定义相关的符号常量,而不是新类型。例如,可以用枚举来定义switch语句中使用的符号常量。如果打算只使用常量,而不创建枚举类型的变量,则可以省略枚举类型的名称。

enum  {red,orange,yellow,green,blue};

//可以自定义枚举的值

enum bits {one = 1,two = 2,four = 4,eight = 8};
enum bigstep{first,second = 100,third};

first默认情况是0,third是101。

enum {zero,null = 0,one,num_uno = 1};

枚举值可以相同zero,null都是0,one和num_uno都是1。

C++现在通过强制类型转换,增加了可赋给枚举变量的合法值。每个枚举都有取值范围(range),通过强制类型转换,可以将取值范围中的任何整数值赋给枚举变量,即使这个值不是枚举值。

enum bits {one = 1,two = 2,four = 4,eight = 8};
bits myflag;
myflag = bits(6);

其中6不是枚举值,但它位于枚举定义的取值范围内。

取值范围的定义如下。首先,要找出上限,需要知道枚举量的最大值。找到大于这个最大值的、最小的2的幂,将它减去1,得到的便是取值范围的上限。例如,前面定义的bigstep的最大值枚举值是101。在2的幂中,比这个数大的最小值为128,因此取值范围的上限为127。要计算下限,需要知道枚举量的最小值。如果它不小于0,则取值范围的下限为0;否则,采用与寻找上限方式相同的方式,但加上负号。例如,如果最小的枚举量为−6,而比它小的、最大的2的幂是−8(加上负号),因此下限为−7。

举报

相关推荐

0 条评论