c语言枚举

枚举介绍

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

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

举例:一个星期有7天,定义数据来表示星期一到星期天。
传统方法:

#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=2,WED=3,THU=4,FRI=5,SAT=6,SUN=7
};

完整代码

#include<stdio.h>

void main(){
	enum Day{
	MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6,SUN=7
};//注意分号位置(枚举7个元素) 
enum Day day;//enum Day是枚举类型,day是枚举变量
day = WED;//给枚举变量day 赋值,值就是某个枚举元素
printf("%d",day);// 3 ,每个枚举元素对应一个值 
}

在这里插入图片描述

枚举遍历

遍历for循环打印枚举元素

#include<stdio.h>

enum Day{
	MON=1,TUE,WED,THU,FRI,SAT,SUN//如果没有赋值就自动按顺序赋值,如果MON也没有给值,那么MON的默认值就是0
}day;//表示定义一个枚举类型 enum Day,day是枚举变量
void main(){
	for(day=MON;day<=SUN;day++){
		printf("枚举元素:%dn",day);// 每个枚举元素对应一个值
	} 
}

在这里插入图片描述

枚举在switch语句里面的使用

#include<stdio.h>

enum SEASONS{
	SPRING=1,SUMMER,AUTUMN,WINTER//如果没有赋值就自动按顺序赋值 
}season;//表示定义一个枚举类型 enum Day,day是枚举变量
void main(){
	printf("请输入你喜欢的季节(1到4->春到冬):");
	scanf("%d",&season);
	switch(season){
		case SPRING : printf("你喜欢的季节是春天");break;
		case SUMMER : printf("你喜欢的季节是夏天");break;
		case AUTUMN : printf("你喜欢的季节是秋天");break;
		case WINTER : printf("你喜欢的季节是冬天");break;
		default:printf("你没有选择你喜欢的季节"); 
	}
}

输入1
在这里插入图片描述
输入5
在这里插入图片描述
写法

enum SEASONS{
	SPRING=1,SUMMER,AUTUMN,WINTER//如果没有赋值就自动按顺序赋值 
}season;//表示定义一个枚举类型 enum Day,day是枚举变量
void main(){
	printf("请输入你喜欢的季节(1到4->春到冬):");
	scanf("%d",&season);
这个地方还可以这样写
void main(){
	enum SEASONS{SPRING=1,SUMMER,AUTUMN,WINTER};//定义枚举类型
	enum SEASONS season;//定义枚举变量
	printf("请输入你喜欢的季节(1到4->春到冬):");
	scanf("%d",&season);

如下

#include<stdio.h>

void main(){
	enum SEASONS{SPRING=1,SUMMER,AUTUMN,WINTER};//定义枚举类型
	enum SEASONS season;//定义枚举变量
	printf("请输入你喜欢的季节(1到4->春到冬):");
	scanf("%d",&season);
	switch(season){
		case SPRING : printf("你喜欢的季节是春天");break;
		case SUMMER : printf("你喜欢的季节是夏天");break;
		case AUTUMN : printf("你喜欢的季节是秋天");break;
		case WINTER : printf("你喜欢的季节是冬天");break;
		default:printf("你没有选择你喜欢的季节"); 
	}
}

在这里插入图片描述

枚举细节

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

#include<stdio.h>

void main(){
	enum Day{
	MON,TUE,WED,THU=6,FRI,SAT,SUN
};//注意分号位置(枚举7个元素) 
enum Day day;//enum Day是枚举类型,day是枚举变量
day = FRI;//给枚举变量day 赋值,值就是某个枚举元素
printf("%d",day);
/*7,每个枚举元素对应一个值,THU 定义成6后,
后面一个枚举元素就变成7,前面没有定义还是从0开始*/ 
}

在这里插入图片描述
(3)枚举变量的定义的形式:先定义枚举类型,再定义枚举变量。
(4)将整数转换为对应的枚举值:不能直接将一个整数赋给枚举变量,但是可以将整数,转成枚举类型,再赋给枚举变量。

#include<stdio.h>

void main(){
    enum Day{MON,TUE,WED,THU,FRI,SAT,SUN};
    enum Day day;
    int n =5;
    day = (enum Day)n;
    printf("%d",day);
} 

在这里插入图片描述