35-枚举类型
14.11 枚举类型
可以用枚举类型(enumerated type)声明符号名称来表示整型常量。使用 enum 关键字,可以创建一个新“类型”并指定它可具有的值(实际上, enum 常量是 int 类型,因此,只要能使用 int 类型的地方就可以使用枚举类型)。枚举类型的目的是提高程序的可读性。它的语法与结构的语法相同。例如,可以这样声明:
enum spectrum {red, orange, yellow, green, blue, violet};
enum spectrum color;
第1个声明创建了 spetrum 作为标记名,允许把 enum spectrum 作为一个类型名使用。第2个声明使 color 作为该类型的变量。第1个声明中花括号内的标识符枚举了 spectrum 变量可能有的值。因此, color 可能的值是 red 、 orange 、 yellow 等。这些符号常量被称为枚举符(enumerator)。然后,便可这样用:
int c;
color = blue;
if (color == yellow)
...;
for (color = red; color <= violet; color++)
...;
虽然枚举符(如 red 和 blue )是 int 类型,但是枚举变量可以是任意整数类型,前提是该整数类型可以存储枚举常量。例如, spectrum 的枚举符范围是 0 ~ 5 ,所以编译器可以用 unsigned char 来表示 color 变量。
顺带一提,C枚举的一些特性并不适用于C++。例如,C允许枚举变量使用 ++ 运算符,但是C++标准不允许。所以,如果编写的代码将来会并入C++程序,那么必须把上面例子中的 color 声明为 int 类型,才能C和C++都兼容。