C语言——枚举类型用法

枚举的定义

  enum 枚举名{ 枚举元 素1,枚举元素2,枚举元素3...};

使用枚举类型的好处

  增加程序的可读性,我们都知道在计算机中所有信息都是用二进制来表示的,如果你用二进制来表示某件事务是非常不直观的,为了使程序更加直观我们引入枚举。

枚举的应用

复制代码
 1 /*红色、黄色、绿色、蓝色,黑色*/
 2 enum color{red,yellor,green,blue,black};
 3 int main()
 4 {
 5     char user_color;
 6     while(1)
 7     {
 8         printf("\n请输入颜色");
 9         scanf("%d",&user_color);
10         switch(user_color)
11         {
12             case red: printf("\n你输入的是红色\n"); break;
13             case yellor: printf("\n你输入的是黄色\n"); break;
14             case green: printf("\n你输入的是绿色\n"); break;
15             case blue: printf("\n你输入的是蓝色\n"); break;
16             case black: printf("\n你输入的是黑色\n"); break;
17         }
18     }
19 
20     return 0;
21 }
复制代码

  枚举元素列表中,每个元素只能是整型,如果我们不指定某个元素的大小,默认是从0开始排列,如第2行中的枚举列表中red = 0、yellor = 1......black = 4,从这个代码中我们可以看到红色,黄色不再用数字表示,而是用枚举元素来表示红色、黄色等一些有意义的词,而这个枚举元素的名称可以自己定义,枚举元素本质还是数字。

用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明

复制代码
 1 typedef enum workday  //此处的workday可以省略,或者改成其他,不会影响后面
 2 {
 3     saturday,
 4     sunday,
 5     monday,
 6     tuesday,
 7     wednesday,
 8     thursday,
 9     friday
10 } workday; //此处的workday为枚举型enum workday的别名,类似于int
复制代码

正如上边代码注释所说,worday可以不要,代码如下

复制代码
 1 typedef enum
 2 {
 3     saturday,
 4     sunday,
 5     monday,
 6     tuesday,
 7     wednesday,
 8     thursday,
 9     friday
10 } workday; //此处的workday为枚举型enum workday的别名
11 workday today, tomorrow; //变量today和tomorrow的类型为枚举型workday,也即enum workday
复制代码

在程序中我们是直接可以用某个枚举中的枚举元素的,在STM32开发库中这种枚举用法非常多,下图就是STM32库中的代码示例,利用这个方法开发库,可以大大增加程序的可读性。

复制代码
 1 typedef enum 
 2 {
 3   LED1 = 0,
 4   LED2 = 1,
 5   LED3 = 2,
 6   LED4 = 3
 7 } Led_TypeDef;
 8 
 9 typedef enum 
10 {  
11   BUTTON_WAKEUP = 0,
12   BUTTON_TAMPER = 1,
13   BUTTON_KEY = 2,
14   BUTTON_RIGHT = 3,
15   BUTTON_LEFT = 4,
16   BUTTON_UP = 5,
17   BUTTON_DOWN = 6,
18   BUTTON_SEL = 7
19 } Button_TypeDef;
posted @ 2020-06-17 09:56  鲸小鱼-  阅读(628)  评论(0编辑  收藏  举报