1、枚举类型
如果一个变量只有几种可能的值,则可以定义为枚举(enumeration)类型, 所谓枚举就是值 把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。
C语言 供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。
应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为 任何基本类型。
枚举类型定义的一般形式为: enum 枚举类型名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如,该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取 值只能是七天中的某一天。 可以如此定义:
enum WeekDay {sun,mon,tue,wed,thu,fri,sat};
enum Wx {jin,mu,shui,huo,tu};
enum Season {spring,summer,autumn,winter};
2、枚举类型变量
如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明
设有变量a、b、c被说明为上述的weekday。 可采用下述任一种方式:
enum weekday{sun,mou,tue,wed,thu,fri,sat};
enum weekday a,b,c; 或者为:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者为: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
3、枚举类型变量的赋值和使用
枚举类型在使用中有以下规定。
1) 枚举值通常是固定不变的,不能对他进行修改(定义类型的时候可指定值)。 不能在程序中用赋值语句再对它赋值。 例如对枚举weekday的元素再作以下赋值: sun=5; mon=2; sun=mon; 都是错误的(标准语法不允许,但是有的xcode编译器允许修改,)。
2) 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2...。 如在weekday中,sun值为0,mon值为1,...,sat值为6。
3) 访问和使用 定义枚举变量: enum weekday day; 枚举变量的赋值:day = sun;///day只能赋值 枚举指定的值(xcode下赋值其他 的值也不报错, 编译器特性)
#include <stdio.h>
int main(int argc, const char * argv[]) {
//定义枚举类型
enum weekday{sun,mou,tue,wed,thu,fri,sat};
//定义枚举变量
enum weekday day;
//设定枚举变量的值
day = wed;
switch (day) {
case sun:
printf("%d\t",sun);
break;
case mou:
printf("%d\t",mou);
printf("星期一\n");
break;
case tue:
printf("%d\t",tue);
printf("星期二\n");
break;
case wed:
printf("%d\t",wed);
printf("星期三\n");
break;
case thu:
printf("%d\t",thu);
printf("星期四\n");
break;
case fri:
printf("%d\t",fri);
printf("星期五\n");
break;
case sat:
printf("%d\t",sat);
printf("星期六\n");
break;
default:
break;
}
return 0;
} |
|