目录
  • 1.枚举类型
    • 1.1 实例1
    • 1.2 枚举类型声明
    • 1.3 枚举类型取别名
    • 1.4 枚举类型的遍历
  • 1.5 枚举类型在switch中的应用

    1.枚举类型

    1.枚举数据类型是C语言中一种构造数据类型,可以让数据更加简洁,更易读,对于只有几个特定的数据,可以使用枚举类型
    2.枚举对应英文enumeration,简写为enum
    3.枚举是一组常量的集合,包含一组有限的特定的数据
    4.枚举语法的定义格式为

    highlighter-

    enum 枚举名 {枚举元素}

    1.1 实例1

    使用枚举表示一个星期

    highlighter- Bash

    // 传统方法
    #define MON 1;
    #define TUE 2;
    #define WeD 3;
    #define THU 4;
    #define FRI 5;
    #define SAT 6;
    #define SUN 7;

    highlighter- Go

    #include <stdio.h>
    void main() {
    	enum DAY
    	{
                    // 这里DAY 就是枚举类型, 包含了7个枚举元素 
                    // 没有赋值,就按照顺序给值 0 1 2 3 4 ...
                    // 枚举类型默认是从0开始的  
                    // 给初始值之后会从初始值递增
    		MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7
    	}; 
    	enum DAY day; // enum DAY  是枚举类型, day 就是枚举变量 
    	day = WED; //给枚举变量  day 赋值,值就是某个枚举元素
    	printf("%d",day);// 3 , 每个枚举元素对应一个值
    	getchar();
    }

    1.2 枚举类型声明

    如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

    highlighter- CSS

    enum weekday{sun,mon,tue,wed,thu,fri,sat};	//定义枚举类型
    enum weekday a,b,c;                             //定义3个枚举类型的变量
    enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;	//定义枚举类型的同时,定义3个变量
    enum{sun,mon,tue,wed,thu,fri,sat}a,b,c;		//枚举名可省略,但后面不能再定义新的枚举变量

    1.3 枚举类型取别名

    highlighter- Go

    // typeof可以把枚举类型定义一个别名
    typedef enum weekday		//此处的weekday为枚举名
    {
    	Mon = 0,
    	Tues,
    	Wed,
    	Thurs,
    	Fri,
    	Sat,
    	Sun
    } weekday;				//此处的weekday为enum weekday的别名
    weekday today, tomorrow;		//枚举类型的变量,即enum weekday类型

    highlighter- Go

    // 枚举名可以省略
    typedef enum 	//省略枚举名
    {
    	Mon = 0,
    	Tues,
    	Wed,
    	Thurs,
    	Fri,
    	Sat,
    	Sun
    }weekday;				//此处的weekday为枚举类型的别名
    weekday today, tomorrow;		//枚举类型的变量,即enum weekday类型

    highlighter- Go

    // typeof使用的时候不可以省略别名
    typedef enum 	//省略枚举名
    {
    	Mon = 0,
    	Tues,
    	Wed,
    	Thurs,
    	Fri,
    	Sat,
    	Sun
    }weekday;				//此处的weekday为枚举类型的别名
    weekday today, tomorrow;		//枚举类型的变量,即enum weekday类型

    • 不能定义同名的枚举类型
    • 不能包含同名的枚举成员

    1.4 枚举类型的遍历

    C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的, 枚 举类型必须连续是可以实现有条件的遍历。以下实例使用 for 来遍历枚举的元素。

    highlighter- Go

    #include <stdio.h>
    
    enum DAY {
          MON=1, TUE, WED, THU, FRI, SAT, SUN //如果没有给赋值,就会按照顺序赋值
    } day; // 表示 定义了一个枚举类型 enum Day ,同时定义了一个变量 day(类型是 enum DAY)
    
    
    int main() {
    	
    	// 遍历枚举元素, 枚举的每个元素都对应数值
    	//day++ 会给出警告,但是可以运行
    	for (day = MON; day <= SUN; day++) { //SUN = 7
    		printf("枚举元素:%d \n", day); // 1, 2, 3, 4,5,6,7
    	}
    	//day = FRI;
    	//printf("%d", day); // 10
    	getchar();
    	return 0;
    
    }

    1.5 枚举类型在switch中的应用

    highlighter- Bash

    #include <stdio.h>
    
    void  main() { 
        enum SEASONS {SPRING=1, SUMMER, AUTUMN, WINTER}; //定义枚举类型  enum SEASONS   
        enum SEASONS season;//定义了一个枚举类型变量 season(类型 enum SEASONS )
        printf("请输入你喜欢的季节: (1. spring, 2. summer, 3. autumn 4 winter): ");
        scanf("%d", &season);
        switch (season) {
        case SPRING:
            printf("你喜欢的季节是春天");
            break;
        case SUMMER:
            printf("你喜欢的季节是夏天");
            break;
        case AUTUMN:
            printf("你喜欢的季节是秋天");
            break;
        case WINTER:
            printf("你喜欢的季节是冬天");
            break;
        default:
            printf("你没有选择你喜欢的季节");
        }
        getchar();
        getchar();
      
    }

    到此这篇关于C语言枚举类型详解的文章就介绍到这了,更多相关C语言枚举类型内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

    您可能感兴趣的文章:

    • c语言枚举类型enum的用法及应用实例
    • C语言 枚举类型(Enum)详解及示例代码
    • C++枚举类型enum与enum class的使用
    • C++枚举类型用法总结(枚举字符常量代替常量)
    • 关于C++11中限定作用域的枚举类型的问题