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.