枚举Enumerations (enum)

 

Enumerated types (enum)

 

枚举类型是一组用户自定义的类型,被称为枚举(enumeratros),也被称为可能值(possible values)。枚举类型的对象可以取枚举的任意一个值。

枚举(Enumerations)可以用来生成一些任意类型的数据,不只限于数字类型或字符类型,甚至常量true 和false。它的定义形式如下:

 

    enum type_name{

    value1;

    value2;

    value3;

    ...

    ...

    }object_name;

 

这里创建了类型 type_name,它可以取 value1, value2,value3,...,中的任意一个值。这个类型的对象(variables)可以直接实例化为

object_names。

例如,我们定义一个存储有不同颜色的新的变量类型 colors_t,如下:

 

    enum colors_t{black, blue, green, cyan, red, purple, yellow, white};

 

注意在这个定义里我们没有使用任何基本数据类型。换句话说,我们创造了一种的新的数据类型,而它并没有基于任何已存在的数据类型:类型

color_t,花括号{}中包括了它的所有的可能取值。例如,在定义了colors_t 列举类型后,我们可以使用以下表达式 :

 

    colors_t mycolor;

    mycolor = blue;

    if(mycolor == green) mycolor = red;

 

实际上,我们的枚举数据类型在编译时是被编译为整型数值的,而它的数值列表可以是任何指定的整型常量 。如果没有指定常量,枚举中第一个列出的

可能值为0 ,后面的每一个值为前面一个值加1。因此,在我们前面定义的数据类型colors_t 中,black 相当于0, blue 相当于 1, green 相当于2

,后面依此类推。

如果我们在定义枚举数据类型的时候明确指定某些可能值(例如第一个)的等价整数值,后面的数值将会在此基础上增加,例如:

 

    enum months_t { january = 1, february, march, april, may, june, july, 

              august, september, october, november, december}y2k;

 

在这个例子中,枚举类型 months_t 的变量 y2k 可以是12种可能取值中的任何一个,从 january 到 december ,它们相当于数值1 到 12,而不是0到 11 ,因为我们已经指定 january 等于1。

 

posted on 2014-03-26 23:48  guozqzzu  阅读(514)  评论(0编辑  收藏  举报