您好!欢迎来到信盈达产学合作协同育人平台|校企合作|嵌入式培训|解决方案|

登录 注册 微信快速登录

扫一扫看效果 关闭

好文章,欢迎分享给朋友

xyd_lyy

11-29 00:36    浏览1058

1.1    枚举

1.1.1         枚举概述

枚举型是四种基本数据类型之一。常量、字符型、布尔型可以用来表达数,字符,真假的描述。但我们还是觉得有点缺欠:它们不能方便地进行一些标识符的描述,如:红,橙,黄,绿,青,蓝,紫七种颜色,要在数据类型中要把它们直接表达出来,我们觉得有障碍。而在计算机内有没有这种数据类型,能够很方便地将它们表示出来?有,枚举型能办到。用四种基本数据类型不便表示的标识符,而且这些标识符的数量是有限的,我们可以用枚举的方法来表达它,把要用的所有标识符全部枚举出来。这种方法比较接近自然语言的表达

在实际应用中,一个变量只能有几种可能的取值。将这几种可能的取值一一列举出来,这样的数据类型就称为枚举类型。  

关键字: enum

当一个变量所对应的值是有限多个,而且是固定的

             星期7              月份12            季节 4

针对一些使用常见的,固定的,数据个数有限的,组成一个集合,集合里面的数据实际在内存中存储是整型数据

好处:1)增强程序代码的可读性,2)限制数据输入范围,

1.1.2         枚举类型的定义

{

标识符[=整型常数]

标识符[=整型常数]

...

标识符[=整型常数]

} 枚举变量;

如果枚举没有初始化,即省掉"=整型常数"时,则从第一个标识符开始,顺次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。

说明:

1)enum  关键字

2)enum 枚举名枚举类型

3)枚举列表中的数据,称为枚举子,不是字符串,在内存中是整型数据(int)

4)如果不给枚举列表中的枚举子赋值,则系统默认给第一个枚举子赋值为0

5)枚举列表中枚举子的值是上一个枚举的值加1

6)枚举列表中的枚举子使用逗号隔开

7)枚举变量的定义方式跟结构体变量定义的方式一样

8)给枚举变量赋值的时候必须是枚举列表中的值

9)可以给枚举列表中的枚举子赋值

10)枚举中每个成员(标识符)结束符是"," 不是";", 最后一个成员可省略","

1.1.3         枚举类型变量的定义初始化赋值及引用

1. 枚举类型的定义跟结构体变量的定义方式一样

2. 给枚举变量赋值必须是枚举列表中的值,否则必须要将其强制转换为枚举类型然后在赋值

3. 枚举列表中的数据,称为枚举子,用标识符表示

4. 枚举类型--数据类型,具有全局和局部作用域

5. 枚举子用逗号隔开

6. 枚举子对应在内存中存储的值是整型常量值(int)

7. 系统默认枚举列表中的枚举子的值从0开始

8. 下一个枚举子的值是上一个枚举子的值加1

9. 给枚举变量赋值只能是枚举列表中的值,除非做强制类型转换

#include <stdio.h>

enum Week         //枚举类型

{

      //枚举列表,枚举子  标识符  枚举子逗号隔开

      Mon ,      //系统默认给第一个枚举子赋值为0

      Tues,                //枚举子是上一个枚举子的值进行加1

      Wednes,   //枚举子是整型常量值,int

      Thurs,

      Fri ,

      Sat,

      Sun

};

char * fun(int n);

char * test(enum Week  wk);

int main()

{

      //给枚举变量赋值必须是枚举列表中的枚举子

      enum Week  wk = Sat;

      printf("%d\n",wk);      

      printf("===============================\n");

      // char *p = fun(3);

      // printf("%s\n",p);

     

      char * p = test(Fri);

      printf("%s\n",p);

}

char * test(enum Week  wk )

{

      char *str[7] = {

                                         "Monday",

                                         "Tuesday",

                                         "Wednesday",

                                         "Thursday",

                                         "Friday",

                                         "Saturday",

                                         "Sunday"

                                  };

      return str[wk];

}

//写一个函数,输入十进制数据,转换为对应的星期字符串

char * fun(int n)

{

      if(n < 1 || n > 7 )

      {

             return NULL;

      }

      char *str[7] = {

                                         "Monday",

                                         "Tuesday",

                                         "Wednesday",

                                         "Thursday",

                                         "Friday",

                                         "Saturday",

                                         "Sunday"

                                  };

      return str[n-1];

}

1.1.4         枚举类型在单片机中的使用,

可根据单片机的示例程序进行讲解

注意:

枚举常量无论写成什么形式它仅代表是整型常量,不是字符串和字符,所以不    能用双引号和单引号

不允许对枚举变量赋值成其他类型的数据,如果需要那么必须将此数据强制转换为枚举类型

枚举型变量在输出的时候是以整数形式输出

列表中的常量不能在初始化以外的情况下赋值

枚举型变量所对应的数值,只能是在定义枚举类型的时候,列表中所列出的数据

评论0 0
评论
内容加载中……,请稍候!

手指长按二维码,快速关注

给TA留言
留言
返回
评论