• C语言的枚举类型enum


    枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

    枚举语法定义格式为:

    enum 枚举名 {枚举元素1,枚举元素2,……};
    

      接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:

    #define MON  1
    #define TUE  2
    #define WED  3
    #define THU  4
    #define FRI  5
    #define SAT  6
    #define SUN  7
    

      这样的表示方法比较繁琐,使用枚举的数据类型便可以大大降低代码的繁琐程度

    enum DAY
    {
          MON=1, TUE, WED, THU, FRI, SAT, SUN
    };
    

      注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

    enum season {spring, summer=3, autumn, winter};
    //在定义枚举类型是改变其中枚举元素的值
    /*
    没有指定值的枚举元素,其值为前一元素加 1。
    也就说 spring 的值为 0,summer 的值为 3,
    autumn 的值为 4,winter 的值为 5
    */
    

      

    枚举变量的定义方法

    一、先定义枚举类型再定义枚举变量

    eunm DAY
    {
        MON = 1, TUE,  WED, THU, FRI, SAT, SUN
    };
    
    enum DAY day_test;
    

    二、定义枚举类型的同时定义枚举变量

    enum DAY
    {
        MON = 1; TUE, WED, THU, FRI, SAT, SUN
    }day_test;
    

    三、省略枚举类型直接定义枚举变量

    enum
    {
        MON = 1, WED, THU, FRI, SAT, SUN
    }day_test;
    

      下面学习几个实例:

    #include <stdio.h>
     
    enum DAY
    {
          MON=1, TUE, WED, THU, FRI, SAT, SUN
    };
     
    int main()
    {
        enum DAY day;
        day = WED;
        printf("%d",day);
        return 0;
    }
    
    /*
    本例子输出结果为:3
    */
    

      

    在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。

    不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

    以下实例使用 for 来遍历枚举的元素:

    #include <stdio.h>
     
    enum DAY
    {
          MON=1, TUE, WED, THU, FRI, SAT, SUN
    } day;
    int main()
    {
        // 遍历枚举元素
        for (day = MON; day <= SUN; day++) {
            printf("枚举元素:%d 
    ", day);
        }
    }
    
    /*
    枚举元素:1 
    枚举元素:2 
    枚举元素:3 
    枚举元素:4 
    枚举元素:5 
    枚举元素:6 
    枚举元素:7
    */
    

      

    枚举在 switch 中的使用:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
     
        enum color { red=1, green, blue };
     
        enum  color favorite_color;
     
        /* 用户输入数字来选择颜色 */
        printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");
        scanf("%u", &favorite_color);
     
        /* 输出结果 */
        switch (favorite_color)
        {
        case red:
            printf("你喜欢的颜色是红色");
            break;
        case green:
            printf("你喜欢的颜色是绿色");
            break;
        case blue:
            printf("你喜欢的颜色是蓝色");
            break;
        default:
            printf("你没有选择你喜欢的颜色");
        }
     
        return 0;
    }
    
    /* 
    请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1
    你喜欢的颜色是红色
    */
    

      

    将整数类型转换为枚举类型

    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
     
        enum day
        {
            saturday,
            sunday,
            monday,
            tuesday,
            wednesday,
            thursday,
            friday
        } workday;
     
        int a = 1;
        enum day weekend;
        weekend = ( enum day ) a;  //类型转换
        //weekend = a; //错误
        printf("weekend:%d",weekend);
        return 0;
    }
    

      输出结果为:weekend:1

  • 相关阅读:
    Oracle 10g 改机器名后监听不能启动 解决方案 TNS12541 TNS12545
    14.3.1 IMPDP 命令行选项
    14.3.2 调用IMPDP —— 导入表空间
    三十岁之前不必在乎的事
    正则表达式
    GridLayout and GridData
    非UI线程更新界面
    整理用Java实现数字转化成字符串左边自动补零方法
    stackLayout
    读写properties文件
  • 原文地址:https://www.cnblogs.com/wind-under-the-wing/p/14019999.html
Copyright © 2020-2023  润新知