一、枚举的作用
- 枚举在c语言中其实是一些符号常量集。
- 直白的说:枚举定义了一些符号,这些符号的本质是int类型的常量,每个符号和一个常量绑定。这个符号就表示一个自定义的识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。
- 枚举中的枚举值都是常量。
- 枚举符号常量和其对应的常量数字来说,数字不重要,符号才重要。符号对应的数字只要彼此不相同即可,一般我们不明确指定这个数字,让编译器自动分配。从0开始依次增加。
#include <stdio.h>
enum return_value
{
ERROR=23,
RIGHT,
};
enum return_value func1(void)
{
enum return_value r1;
r1=ERROR;
return r1;
}
int main(void)
{
enum return_value r1=func1();
if (r1==FRIGHT)
{
printf("函数执行正确.\n");
}
else
{
printf("函数执行错误.\n");
}
printf("ERROR.\n",ERROR); //0.23
return 0;
}
二、c语言为何需要枚举
- c语言可以没有枚举。使用枚举其实就是对1,0这些数字进行符号化编码。好处就是编程时可以不看数字只看符号。符号的含义是显然的,数字的含义需要文档。
- 宏定义的目的是:不用数字而用符号。从这可以看出宏定义和枚举有内在联系。
- 宏定义和枚举大部分的时候是可以替换的。
#include <stdio.h>
//宏定义解决返回值问题
#define ERRPR 0
#define RIGHT 1
int func2(void)
{
return ERROR;
}
int main(void)
{
r1=func2();
if (r1==FRIGHT)
{
printf("函数执行正确.\n");
}
else
{
printf("函数执行错误.\n");
}
return 0;
}
三、枚举和宏定义的区别
- 枚举是将多个有关联的符号封装在一个枚举中,宏定义是完全散的。枚举其实是多选一。
- 当我们要定义的常量是一个有限集合时,最适合使用枚举。
- 定义的常量符号之间无关联,或者个数是无限的。
总结
- 宏定义先出现,后来发现符号常量之间彼此之间有多选一的关联。用宏定义做不贴切,于是发明了枚举这种数据结构。
四、枚举的定义和使用
- 枚举中的元素实质是全局变量。
- 枚举和枚举之间元素不能重名。