• C语言的枚举


    一·枚举类型的定义

    语法:定义枚举变量的一般形式如下:
    (1)先定义枚举类型,再定义枚举变量
    enum 枚举类型名 变量名列表 ;
    (2)在定义枚举类型的同时定义枚举变量
    enum 枚举类型名
    {
      枚举元素表
    } 变量名列表 ;
    语义:定义变量名列表中的各变量是枚举类型,编译器为各枚举变量分配存储空间。
    enum WeekType {Mon,Tue,Wed,Thu,Fri,Sat,Sun} ; //定义枚举类型
    enum WeekType today, nextday ; //声明枚举变量
    enum WeekType是已经定义的枚举类型,enum不能省略
    enum WeekType
    {
    Mon, Tue, Wed, Thu, Fri, Sat, Sun
    } today, nextday ; //定义枚举类型同时声明枚举变量
    可以省略枚举类型名,但在此定义后无法再定义这个类型的其他枚举变量
    例子:定义枚举类型表示一周的七天。
    enum WeekType { Mon, Tue, Wed, Thu, Fri, Sat, Sun } ;
    枚举元素的默认值按照定义的顺序依次为0、1、2、……。
    enum WeekType { Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun } ;
    在定义时指定某个枚举元素的值,其后面的枚举元素值依次加1,因此,枚举值依次为1、2、3、……。


    二·枚举变量的初始化

    语法:初始化枚举变量一般形式如下:
    (1)先定义枚举类型,再定义枚举变量并初始化
    enum 枚举类型名 变量名 = 初值 ;
    (2)定义枚举类型的同时,定义枚举变量并初始化
    enum 枚举类型名
    {
      枚举元素表
    } 变量名 = 初值;
    语义:定义变量名列表中的各变量是枚举类型,编译器为各枚举变量分配存储空间并进行初始化。
    enum WeekType {Mon,Tue,Wed,Thu,Fri,Sat,Sun} ; //定义枚举类型
    enum WeekType today = Mon ; //定义枚举变量并初始化
    enum WeekType
    {
    Mon, Tue, Wed, Thu, Fri, Sat, Sun
    } today = Mon ; //定义枚举类型同时定义枚举变量


    三·枚举变量的操作


    1. 赋值操作
    C语言规定:只能将枚举元素赋给枚举变量,不能直接把枚举值赋给枚举变量,但是,当枚举元素赋给一个枚举变量时,该变量实际得到的是该枚举元素的枚举值。
    today = 1;

    错误做法,一下是正确做法;

    today = Mon;
    today = (enum WeekType)1;


    2. 输入/输出操作
    由于不能直接把枚举值赋给枚举变量,因此,从键盘上输入一个整数后要进行强制类型转换再赋给枚举变量。

    enum WeekType today; /*定义枚举变量today*/
    int index;
    scanf("%d", &index);
    today = (enum WeekType)index; /*将index强制转换为枚举元素*/

    枚举变量不能直接输出枚举元素,一般使用switch语句输出。
    enum WeekType day; /*定义枚举变量day*/
    switch (day) /*输出对应的星期名*/
    {
    case Mon: printf("Monday"); break;
    case Tue: printf("Tuesday"); break;
    case Wed: printf("Wednesday"); break;
    case Thu: printf("Thursday"); break;
    case Fri: printf("Friday"); break;
    case Sat: printf("Saturday"); break;
    case Sun: printf("Sunday"); break;
    default: break;
    }

    3. 其他操作
    本质上,枚举类型是缩小范围的int型,因此,枚举变量可以执行int型数据允许的操作,例如+、-、*、/等算术运算,以及以值传递方式作为函数的形参。
    enum WeekType today = Mon, nextday;
    nextday = (enum WeekType)(Mon + (today - Mon + 1) % 7);

    小结:
    问题:在现实世界中,满足什么条件的数据可以定义为枚举类型?
    数据的值是有限的,并且在允许的时间范围内可以穷举
    数据的值在一个时刻只能取有限个中的一个,例如:性别、硬币的状态、游戏的结果

     /*来自老师上课是的ppt,嘿嘿,大学一路C*/

  • 相关阅读:
    sass和less的对比
    vue 源码分析
    vue的全家桶
    Vue组件化和路由
    开发技术文档汇总
    NodeJs前端构建工具 ——————之Grunt篇
    grunt使用小记之uglify:最全的uglify使用DEMO
    20 种提升网页速度的技巧
    webfont应用系列(二)如何制作图标字体?
    快速上手制作Icon Font
  • 原文地址:https://www.cnblogs.com/hello-dummy/p/9010055.html
Copyright © 2020-2023  润新知