枚举

一、枚举的作用

  • 枚举在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;
}

三、枚举和宏定义的区别

  • 枚举是将多个有关联的符号封装在一个枚举中,宏定义是完全散的。枚举其实是多选一。
  • 当我们要定义的常量是一个有限集合时,最适合使用枚举。
  • 定义的常量符号之间无关联,或者个数是无限的。

总结

  • 宏定义先出现,后来发现符号常量之间彼此之间有多选一的关联。用宏定义做不贴切,于是发明了枚举这种数据结构。

四、枚举的定义和使用

  • 枚举中的元素实质是全局变量。
  • 枚举和枚举之间元素不能重名。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容