zoukankan      html  css  js  c++  java
  • 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("
    请输入颜色");
     9         scanf("%d",&user_color);
    10         switch(user_color)
    11         {
    12             case red: printf("
    你输入的是红色
    "); break;
    13             case yellor: printf("
    你输入的是黄色
    "); break;
    14             case green: printf("
    你输入的是绿色
    "); break;
    15             case blue: printf("
    你输入的是蓝色
    "); break;
    16             case black: printf("
    你输入的是黑色
    "); 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;
  • 相关阅读:
    B/S与C/S的联系与区别
    ASP.NET中常用的26个优化性能方法(二)
    ASP.NET下如何防范SQL注入式攻击
    ASP.NET中常用的26个优化性能方法(一)
    Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)
    C#中海量数据的批量插入和更新 [转]
    [译文]从底层角度看ASP.NETA lowlevel Look at the ASP.NET Architecture( 转)
    C#制作Windows service服务系列
    通过C++ Interop把Windows窗体集成到MFC应用程序中
    【转】.NET内存管理、垃圾回收
  • 原文地址:https://www.cnblogs.com/lixuejian/p/13150745.html
Copyright © 2011-2022 走看看