5.5 C51的枚举
枚举类型是由基本数据类型组合而成,即枚举类型属于聚合数据类型的一种。例如,1个星期内有7天,1年有12个月,每学期有6门课程等。如果把这些量单独定义为整型、字符型或其他类型,则不便于对性质相同的数据进行统一操作,在程序中处理起来不方便。此时若采用枚举类型,不但可以直观地表示其取值范围,而且也节省了存储空间。
5.5.1 枚举和枚举变量的声明
枚举类型主要用于将变量的取值限定在一个有限的范围内的情况。声明枚举类型时,列举出所有可能的取值,被声明为该枚举类型的变量,其取值不能超过该枚举定义的范围。下面分别介绍枚举和枚举变量的声明方法。
1.枚举的声明
在C51语言中,声明枚举类型的一般形式如下。
enum枚举名
{
标识符[=整型常量],
标识符[=整型常量],
……
};
其中,enum为关键字,枚举名即所定义的枚举类型,标识符是枚举类型变量的取值范围,一般为整型常量表达式。
注意与结构、联合体内的成员定义不同,每个枚举元素后的结束符是“,”,而不是“;”。最后一个元素后的结束符可以省略不写。
以1个星期内的7天为例,枚举类型的声明示例如下。
enum weekday//声明枚举类型表示1个星期
{
Monday,//枚举元素0,星期1
Tuesday,//枚举元素1,星期2
Wednesday,//枚举元素2,星期3
Thursday,//枚举元素3,星期4
Friday,//枚举元素4,星期5
Saturday,//枚举元素5,星期6
Sunday,//枚举元素6,星期7
};
本例中,声明枚举名为weekday的枚举类型,该枚举共有7个元素,对应1个星期中的7天。
2.枚举变量的声明
枚举变量是以枚举类型为说明符的变量,其取值只能是其声明的枚举类型中的元素之一。声明枚举类型变量的一般形式如下。
enum枚举名
{
标识符[=整型常量],
标识符[=整型常量],
……
}枚举变量;
可以同时定义多个同一枚举类型的变量,这些变量的取值范围只能是枚举类型所列举的数值。
在C51语言中,与声明结构变量、联合变量一样,也可以采用3种方式声明枚举变量。这3种声明方式表述如下。
❑在声明枚举类型时,同时声明枚举变量,示例如下。
enum weekday//声明枚举类型表示1个星期
{
Monday,//枚举元素0,星期1
Tuesday,//枚举元素1,星期2
Wednesday,//枚举元素2,星期3
Thursday,//枚举元素3,星期4
Friday,//枚举元素4,星期5
Saturday,//枚举元素5,星期6
Sunday,//枚举元素6,星期7
}a,b,c;//声明枚举变量
在C51语言中,凡被声明为weekday类型的变量,其取值只能是7天中的某一天,即枚举变量a、b、c只能取7个枚举元素中的某个值。
❑先声明枚举类型,后声明枚举变量,示例如下。
enum weekday//声明枚举类型表示1个星期
{
Monday,//枚举元素0,星期1
Tuesday,//枚举元素1,星期2
Wednesday,//枚举元素2,星期3
Thursday,//枚举元素3,星期4
Friday,//枚举元素4,星期5
Saturday,//枚举元素5,星期6
Sunday,//枚举元素6,星期7
};
enum weekday a,b,c;//声明3个枚举变量
❑直接声明枚举变量,示例如下。
enum
{
Monday,//枚举元素0,星期1
Tuesday,//枚举元素1,星期2
Wednesday,//枚举元素2,星期3
Thursday,//枚举元素3,星期4
Friday,//枚举元素4,星期5
Saturday,//枚举元素5,星期6
Sunday,//枚举元素6,星期7
}a,b,c;//声明枚举变量
本例中,没有给出枚举名,而直接定义了3个具有枚举类型的变量,这样就不能在同一程序中定义其他枚举变量,容易发生混淆。