枚举类型

枚举类型就是一一列举,在C语言中有一种枚举类型,其含义就是将具有相同属性的一类数据一一列举出来。

枚举类型的一般定义形式为:  

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

};

其中 [ ] 中的部分可有可无。枚举类型是有序类型,如果没有为枚举类型常量指定值,那么它的值比前一个值大1,枚举常量的值默认从0开始。枚举元素按照定义时的先后顺序分别编号为0,1,2,...,n-1.当然,也可以人为指定枚举类型常量的值。枚举类型名的命名同样要遵循标识符的命名规则,而其中的标识符 1,2,...,n是定义的枚举类型的全部取值。定义枚举类型的几种方法与结构体和共用体的定义方法类似,有一下三种:

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

}枚举变量1,枚举变量2......;

也可以省略枚举类型名,如:

enum           {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

}枚举变量1,枚举变量2......;

还可以先定义枚举类型,后定义枚举变量的方法,如:

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

};

enum    枚举类型名      枚举变量1,枚举变量2,......;

看下面一个小例子:

#include<stdio.h>

enum    nu1 {

a,

b,

c,

d,

};

enum    nu2 {

e=3,

f=2,

g=1,

h,

};

void  main()

{

printf("枚举常量 a 的值为:%d    b 的值为:%d     c 的值为:%d     d 的值为:%d", a,b,c,d);

printf("枚举常量 e 的值为:%d    的值为:%d     的值为:%d     的值为:%d", e,f,g,h);

return ; 

}

运行结果:

枚举常量 a 的值为:0   b 的值为: 1   c 的值为: 2   d 的值为 :3

枚举常量 e 的值为:3   f 的值为: 2   g 的值为: 2   h 的值为 :2

从上面的程序可以看出,在定义的枚举类型nu1中,并没有指定枚举常量的值,而是采用默认的方法,打印出来的结果与前面分析的一致,从0开始,后面的枚举常量的值比前面的枚举常量的值大1;在枚举常量nu2中,那个没有指定的值 h,它比前面的枚举常量值大1.

需要注意一点,在使用枚举类型时,同一个作用域内不能出现重名的枚举常量名,如:

#include<stdio.h>

void main()

{

enum   nu1 {

    a,

};

enum      nu2 {

a,

};

return ;

}

运行的时候程序会报错,但是可以把枚举类型 nu2 用括号括起来就可以了

#include<stdio.h>

void main()

{

enum   nu1 {

    a,

};

{

enum      nu2 {

a,

};

}

return ;

}

对于结构体和共用体,没有这样的重名限制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micrle_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值