读书人

枚举部类总结

发布时间: 2012-08-10 12:19:33 作者: rapoo

枚举类型总结

1. 枚举类型是用来声明代表整数常量符号名称。由此可见,枚举类型与整数类型有着密切的联系,枚举类型的常量均是int类型

的,它的存在主要是为了提高程序的可读性,后面的例子将会看到。通过enum关键字就可以创建一个新的“类型”并可以给它指

定具体的值。

【引申】sizeof(枚举类型) = sizeof(int) = 4

2. 枚举类型的声明:

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

enum spectrum color;

【解释】声明一是借用enum关键字,常见新的类型enum spectrum,声明二则是通过新的类型,创建它的变量,注意变量只能取得声明一中所列出的几个值。这方面似乎与结构体的语法十分类似。

3. 枚举常量:

枚举列表中的常量均有默认值,当然也可以用户自己定义设置,如前面的几种颜色,其值将分别是0,1,2,3,4,5等几个整型值。若

出现只是对之间的一个常量赋值,而不对后面的常量赋值,那么这些后面的常量会通过递增自动被赋予值。

在实际的编程中,枚举常量与整形常量可以混用,当然,整形常量中的一些禁忌同样应该适用于枚举常量,比如常量不能自加或者自减。

4. 强制转换:

在GNU编译器下,枚举类型几乎与整形类型通用,当然前提是能容纳下,比如整形常量就可以直接赋值给枚举变量。但是在VC编译器下,则需要做强制转换才行,否则就会出现编译错误

color tree = (color)5;

5. 枚举常量的取值范围:

给定几个枚举常量,如何计算出这个枚举类型的取值范围呢?

最大值:距最大值(指的是列举出的常量最大值)最近的那个2的幂,并减去1。

如:

Enum number { a, b, c = 6, d = 23, e, f};

上面这个例子中的最大值为23,而据其最近的2的幂为32(2的5次幂),则需要5bit就可以容纳,因此其最大值应该为31(32-1)。

负数情况与上面的计算方法类似。

Enum number { a, b, c = -4, d =2 , e, f};

这个例子中的最大值为4(-4的绝对值),需要3bit容纳,另外加上一个符号位,需要4bit,其取值范围是:1000-0111,即-8到7.

读书人网 >编程

热点推荐