C语言的枚举

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuyuzun/article/details/82914542

前言

  1. 本博文基于VC++开发调试;
  2. 本博文只是对于枚举的一个介绍;

什么是枚举

试想一下,当一个值只会在几个有限的范围值内波动时,是否可以将这几个值包裹起来,来避免往后的程序中使用这个值的时候需要从新赋值的情况,比如每周的7天,从周一到周日,每周只会有这7天,这个值很确定;如果我们不进行“包裹”这些值,在后续的程序中,如果我们要输出周一,那么每次都要向“星期”这个变量赋值,然后再打印输出,很麻烦,基于这种解决问题的思想,枚举就产生了;
在对STM32进行库函数开发的时候,经常性的会遇到对于一个寄存器使能位的配置,对于使能位的配置,只需要两个值1和0即可完成配置,将 xxx_Enable = 1和 ! xxx_Enable,增加了程序的可读性;
枚举:如果一个变量只有几个可能的值,则可以定义为枚举类型,所谓枚举就是把可能的值一一列举出来,变量的值只限于所列举的值的范围内;
定义枚举类型

enum 枚举名 {枚举元素};

举例:

enum Weekday {sun,mon,tue,wed,thu,fri,sat};

注意:

  1. 如上面例子,即使枚举元素看起来像变量名,但实际上每个枚举元素是一个常整数,在每个元素没有被程序设计人员赋值的情况下,根据枚举元素的次序从前到后依次是整数:sun = 0,mon = 1,tue = 2,wed = 3,thu = 4,fri = 5,sat = 6;
    在程序人员修改默认值的情况下,也只能对枚举元素直接赋值,而不能在函数体(包裹枚举元素的花括号)外部赋值,因为这不是变量;
    例如:
enum Weekday {sun = 7,mon = 1,tue,wed,thu,fri,sat}workday,week_end;   //后来没有赋值的枚举元素在mon的基础上递增加1,所以sat == 6;
  1. 枚举元素既然是常整数,可以进行关系运算(大于小于等于);

定义枚举类型变量

//方式一:
enum  枚举名 {枚举元素};    //枚举元素也称为枚举常量;
enum 枚举名 枚举类型变量名;
//方式二
enum {枚举元素} 枚举类型变量名;

枚举类型变量的赋值:

枚举类型变量名  =  枚举元素n;

说明:

  1. 定义枚举类型变量的方式和定义结构体,共用体变量的方式一样,但其三者的含义并不一样;
  2. 结构体和共用体变量的初始化是对相应的成员的初始化,枚举变量的初始化就是对枚举变量赋枚举元素的值;

猜你喜欢

转载自blog.csdn.net/wuyuzun/article/details/82914542