c语言用户定义标识符enum,C语言enum枚举类型解析

From:http://blog.csdn.net/skyflying2012/article/details/22736633

在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C

语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。 定义一个变量是枚举类型,可以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。

例如: enum weekday{sun,mon,tue,wed,thu,fri,sat}; 定义了一个枚举类型名 enum weekday,然后定义变量为该枚举类型。例如: enum weekday day; 当然,也可以直接定义枚举类型变量。例如: enum weekday{sun,mon,tue,wed,thu,fri,sat}

day; 其中,sum,mon,…,sat 等称为枚举元素或枚举常量,它们是用户定义的标识符。 需要说明的有以下几点。 ①

枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。 ② 枚举元素作为常量,它们是有值的,C

语言在编译时按定义的顺序使它们的值为,1,2,…。 在上面的说明中,sun 的值为 0,mon 的值为 1,…sat 的值为

6,如果有赋值语句 day=mon; 则 day 变量的值为 1。当然,这个变量值是可以输出的。例如: printf ("%d",day); 将输出整数 1。 如果在定义枚举类型时指定元素的值,也可以改变枚举元素的值。例如: enum

weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day; 这时,sun 为 7,mon 为 1,以后元素顺次加 1,所以 sat 就是 6 了。 ③ 枚举值可以用来作判断。例如: if (day==mon) {…} if (day>mon) {…} 枚举值的比较规则是:按其在说明时的顺序号比较,如果说明时没有人为指定,则第一个枚举元素的值认作

0。例如,mon>sun,sat>fri。 C 语言教程 ?216? ④ 一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值。例如: day=(enum weekday)2; 这个赋值的意思是,将顺序号为 2 的枚举元素赋给

day,相当于workday=tue; 【例 11.6】从键盘输入一个整数,显示与该整数对应的枚举常量的英文名称。 # include void main( ) { enum weekday {sun,mon,tue,wed,thu,fri,sat}

day; int k; printf("input a number(0--6)"); scanf("%d",&k); day=(enum weekday)k; switch(day) { case sun: printf("sunday/n");break; case mon: printf("monday/n");break; case tue: printf("tuesday/n");break; case wed: printf("wednesday/n");break; case thu: printf("thursday/n");break; case fri: printf("friday/n");break; case sat: printf("satday/n");break; default: printf("input error/n");break; } } 程序运行结果为: input a number(0--6)1 monday 在该程序中,枚举常量与枚举变量可以进行比较,但要输出枚举常量对应的英文单词,不能使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值