您的位置:首页 > 其它

枚举类型的使用

2015-08-31 21:23 316 查看
枚举类型对学过编程的人而言可谓是既熟悉又陌生,各种语言的教材上都有对枚举类型的介绍,但是真正用过的人可能不多。

我也是因为工作之后才接触到枚举类型的使用,这时候才知道自己一直对枚举类型都是一知半解,今天通过查阅资料加深了对枚举类型的了解,现将其记录如下。

1.什么是枚举类型

我的理解是枚举类型就是对整型数据起一个别名,这个别名可以是各种字符,甚至汉字,但是不能是整数。一个大家都熟悉的例子:

enum COLOR{RED,BLUE,BLACK};


这里就是把整型0取别名RED,1取别名BLUE,2取别名BLACK;

也许大家注意到了,为什么三个成员分别对应0,1,2呢?是巧合吗?

不是巧合,枚举类型默认从整数0开始,分别与花括号中的各成员对应,而且整数值依次加1。当然也可以指定各别名对应的整型值,如下:

enum COLOR{
RED = 1,
BLUE,
BLACK,
WHITE = 5,
GREEN
};

此时,RED为1,BLUE为2,BLACK为3,WHITE为5,GREEN为6。需注意:

enum num{0,1,2,3,4};


这种写法是错误的,因为枚举花括号中不能是数字。

2.为什么要使用枚举类型

使用枚举类型的目的是限制用户的输入为有限范围内的整数值,例如上面声明了COLOR的枚举,那么,当用户定义一个enum COLOR类型的变量时,该变量的值只能是花括号中的某一种颜色,给它赋值为其他都是错误的。这种特性很适合处理类似于状态机中的状态转换的情形,将所有的状态定义为一个枚举类型中的成员,并为其取合适的名字,会使得程序简单易懂,不易出错。

3.枚举类型的用法

我认为想要正确的使用枚举类型,必须要明确一点:枚举类型也是一种数据类型,也可以作为函数的返回值返回。举例说明如下:

enum weekday{mon,tue,wed,thu,fri,sat,sun};

enum weekday Today = mon;


同样可以使用typedef定义enum weekday类型为Weekday,然后用Weekday声明变量,如下:

#include <stdio.h>
#include <stdlib.h>

typedef enum weekday{
mon,
tue,
wen,
tur,
fri,
sat,
sun
}Weekday;

Weekday test_enum()
{
Weekday Today = mon;

return Today;
}

int main()
{
printf("%d\n",test_enum());

return 0;
}


输出结果为0,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: