枚举类型
来源:互联网 发布:手机桌面优化软件 编辑:程序博客网 时间:2024/06/18 13:26
枚举类型就是一一列举,在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 f 的值为:%d g 的值为:%d h 的值为:%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 ;
}
对于结构体和共用体,没有这样的重名限制- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- Volley
- 2.ubuntu14.04 配置 jdk 8 环境变量
- 【有感】——困境之后的井喷
- kmeans聚类算法及matlab实现
- ViewPager小细节
- 枚举类型
- 斯坦福大学(Andrew Ng)机器学习课程讲义
- Mac Git安装
- iOS之Drawing<1>
- poj 1274 The Perfect Stall
- byte数组和文件互相转换
- VRRP协议
- NYOJ 115 城市平乱【Dijkstra】
- linux下设计一个Shell脚本:求命令行上所有整数和