• C语言-入门-枚举类型(十四)


    什么是枚举类型?

    在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型 显然是不妥当的。C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

    在这里插入图片描述

    枚举类型

    枚举enum就是英文enumerate的缩写,也就是列举、排列说明的意思。枚举类型是C语言中的一种特殊类型,本质上也是算术类型,枚举类型可以让我们的程序使用一些固定长度和固定数值的变量值范围。

    • 枚举一旦定义就不能对它们后期去赋值,只能将它们的值赋给其他的变量。

    • 枚举和宏其实非常类似:宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。我们可以将枚举理解为编译阶段的宏。

    • C语言编译器会将枚举元素作为整型常量处理,称为枚举常量。

    • 在定义枚举类型时可以改变枚举元素的值,使用的时候不能改变枚举的值

    • 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1

    定义枚举类型

    枚举不写对应的值,枚举值默认从0开始

    enum 枚举名 {
        名称1,  //0
        名称2,  //1
        ...
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    枚举也可以手工指定各个名称的值,语法格式如下:自定义枚举中每个元素对应的整数值,例如名称1的值为10,名称2的值为20。

    enum 枚举名 {
        名称1 = 10,
        名称2 = 20,
        ...
    }; 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果我们想让枚举的起始值从1开始那么可以像这样

    enum weekday
    {
        Mon = 1,
        Tues,
        Wed,
        Thurs,
        Fri,
        Sat,
        Sun
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    列:

    #include 
    //枚举颜色
    enum color{red=1, oreange=2, yellow=3, green=4, ching=5, blue=6, purple=7};
    
    //枚举一个星期的每一天  ,如果不赋值,默认枚举的值从0开始
    enum week
    {
        Su, Mo, Tu, We, Th, Fr, Sa
    };
    //枚举每一个月(12个月)
    enum month
    {
        January, February, March, April, May, June, July, August, September, October, November, December
    };
    
    int main() {
        printf("%-3d %-3d %-3d %-3d %-3d %-3d %-3d \n", red, oreange, yellow, green, ching, blue, purple);
        printf("%d %d %d %d %d %d %d\n",  Su, Mo, Tu, We, Th, Fr, Sa);
        printf("%d %d %d %d %d %d %d %d %d %d %d %d \n",  January, February, March, April, May, June, July, August, September, October, November, December);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    定义枚举变量

    枚举是一种类型,定义完毕类型后,还必须有定义枚举变量操作枚举,就好比买了汽车不会开,那么买车有啥用,

        enum week{ Su, Mo, Tu, We, Th, Fr, Sa};
        enum week a, b, c;  //定义枚举变量
        //给枚举变量赋值
        a=Su;
        b=Tu;
        c=Sa;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    也可以在定义枚举类型的同时定义变量和赋值:

    enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a=Mon, b=Tues, c=Sun;
    
    • 1

    判断用户输入的是星期几

    #include 
    int main(){
        enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;
        scanf("%d", &day); //用户输入,给day枚举变量赋值
        //判断用户输入符合啥条件
        switch(day){
            case Mon: puts("Monday"); break;   //puts直接输出字符串
            case Tues: puts("Tuesday"); break;
            case Wed: puts("Wednesday"); break;
            case Thurs: puts("Thursday"); break;
            case Fri: puts("Friday"); break;
            case Sat: puts("Saturday"); break;
            case Sun: puts("Sunday"); break;
            default: puts("Error!");
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    点赞 -收藏-关注-便于以后复习和收到最新内容
    有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
    感谢,配合,希望我的努力对你有帮助^_^

    免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。
  • 相关阅读:
    RetroArch 接入两个同款手柄只能识别到一个导致无法双打的问题
    viewerjs -v 11 动态获取图片(ajax),以及重复初始化问题。
    单链表初阶的两道基础题
    C语言练习题-大数乘法、分解质因数
    基于java+ssm的在线投票管理系统-计算机毕业设计
    使用PHPStudy在本地快速建立网站并实现局域网外访问(无公网IP)
    离线数仓同步数据2
    结构光照明的显微镜系统
    算法日记-02完全背包和多重背包问题总结
    Android 长时间待机后系统概率性无声
  • 原文地址:https://blog.csdn.net/weixin_45203607/article/details/125583266