资源描述:
《c语言enum枚举类型解析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在实际应用屮,有的变量只有儿种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在C语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于列举出來的值的范围内取值。定义一个变量是枚举类型,对以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。例如:enumweekday{sun,mon,tue,wed,thu,fri,sat}:定义了一个枚举类型名enumweekday,然示定义变量为该枚举类型。例如:enumweekdayday;当然,也町以直接定义
2、枚举类型变量。例如:enumweekday{sun,mon5tue,wed,thu,fri,sat}day;其屮,sum,mon,...,sat等称为枚举元素或枚举常量,它们是用户定义的标识符。需要说明的有以卜•儿点。①枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。②枚举元素作为常量,它们是有值的,C语言在编译时按定义的顺序使它们的值为,1,2)...o在上而的说明屮,sun的值为0,mon的值为1,...sat的值为6,如果有赋值语句day=mon;则da
3、y变量的值为1。当然,这个变量值是可以输出的。例如:printf(”%d”,day);将输出整数1。如果在定义枚举类型时指定元索的值,也可以改变枚举元索的值。例如:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;这时,sun为7,mon为1,以后元素顺次加1,所以sat就是6了。③枚举值可以用来作判断。例如:if(day==mon){...}if(day>mon){...}枚举值的比较规则是:按其在说明时的顺序号比较,如果说明时没有人为指定,则笫一个枚举元素的
4、值认作0。例如,mon>sun,sat>frioC语言教程?216?④一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值。例如:day=(enumweekday)2;这个赋值的意思是,将顺序号为2的枚举元素赋给day,相当于workday=tue;【例11.6]从键盘输入一个整数,显示与该整数对应的枚举常量的英文名称。#ineludevoidmain(){enumweekday{sun,mon,tue,wed,thu,fri,sat}day;intk;printf("inputanumber(0
5、-6)u);scanf(”%d”,&k);day=(enumweekday)k;switch(day){casesun:printfC'sunday/n");break;casemon:printf("monday/n”);break;casetue:printf("tuesday/rf');break:casewed:printf("Wednesday/rT);break;casethu:printf(nthursday/rT);break;casefri:printf("friday/nn);break
6、:casesat:printf("satday/n”);break;default:printf("inputerror/n");break;}}程序运行结果为:inputanumber(0-6)1monday在该程序屮,枚举常量与枚举变量可以进行比较,但要输岀枚举常量对应的英文单词,不能使用以卜•语句:printf("%s”,mon);因为枚举常量mon为整数值,而非字符串。在使用枚举变量时,主要关心的不是它的值的大小,而是其表示的状态。注:以卜全部代码的执行坏境为VC++6.0在程序中,可能需要为某些整
7、数定义一个别名,我们町以利用预处理指令#define来完成这项工作,您的代码可能是:#defineMON1#defineTUE2#defineWED3#defineTHU4#defineFRI5#defineSAT6#defineSUN7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。1.定义-•种新的数据类型-枚举型以下代码定义了这种新的数据类型■枚举型enumDAY{M0N=1,TUE,WED,THU,FRI,SAT,SUN};(1)枚举型是一个集合,集合中的元索(枚举
8、成员)是一些命名的整型常量,元索之间川逗号,隔开。(2)DA丫是一个标识符,可以看成这个集合的名字,是一个对选项,即是可有町无的项。(3)笫一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1o(4)可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5)枚举型是预处理指令#define的替代。(6)类型定义以分号;结束。2•使用枚举类烈对变量进行声明新的数据类型定义完成后,它就可以使用了。我们