枚举部类总结

枚举类型总结

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的幂为3225次幂),则需要5bit就可以容纳,因此其最大值应该为3132-1)。

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

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

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