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;