以下内容是学习尚硅谷
7.1 看一个需要
举个例子,比如:一星期有7天,请定义数据表示星期一到星期天
7.1.1 传统的方法
7.2 基本介绍
1)枚举是C语言中的一种构造数据类型,它可以让数据更加简洁,更易读,对于只有几个有限的特定数据,可以使用枚举
2)枚举对应英文(enumeration,简写enum)
3)枚举是一组常量的集合,包含一组有限的特定的数据
4)枚举语法定义格式为
enum 枚举名 {枚举元素1,枚举元素2,.....}
7.3 快速入门
#include <stdio.h>
#include <stdbool.h>
void main(){
enum DAY{
NON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6,SUN=7
};
enum DAY day;
day=WED;
printf("%d",day);
getchar();
}
7.4 枚举的遍历
C语言中,枚举类型是被当做int或者unsigned int类型来处理的,枚举类型必须是连续是可以实现有条件的遍历。以下实例使用for来遍历枚举的元素
#include <stdio.h>
#include <stdbool.h>
enum DAY{
MON=1,TUE,WED,THU,FRI,SAT,SUN//如果没有给赋值,就会按照顺序赋值
} day;
void main(){
//遍历枚举元素
//day++会给出警告,但是可以运行
for (day=MON; day<=SUN; day++) {//要求枚举元素是连续值
printf("枚举元素:%d \n",day);
}
getchar();
}
7.5 switch使用枚举
案例如下:
#include <stdio.h>
#include <stdbool.h>
enum SEASONS{
SPRING=1,SUMMER,AUTUMN,WINTER
} season;
void main(){
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();
}
7.6 枚举类型使用注意事项和细节
1)第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。例如:第一个枚举成员的值定义为1,第二个就是为2,以此类推。
2)在定义枚举类型时改变枚举元素的值
enum DAY{
MON,TUE,WED,THU=9,FRI,SAT,SUN//如果没有给赋值,就会按照顺序赋值
}day;//表示定义了一个枚举类型enum Day,同时定义了一个变量day(类型是enum DAY)
//说明 FRI,SAT,SUN 就是10,11,12
3)枚举变量的定义的形式1–先定义枚举类型,在定义枚举变量
enum SEASONS{
SPRING=1,SUMMER,AUTUMN,WINTER
};
enum SEASONS season;
4)枚举变量的定义的形式2-定义枚举类型的同时定义枚举变量
enum SEASONS{
SPRING=1,SUMMER,AUTUMN,WINTER
}season;
5)枚举变量的定义的形式3-省略枚举名称,直接定义枚举变量
enum{
SPRING=1,SUMMER,AUTUMN,WINTER
}season;//这样使用枚举,该枚举类型只能使用一次
6)可以将整数转换为对应的枚举值
不能直接将一个整数,赋给枚举变量,但是可以将整数,转成枚举类型,再赋给枚举变量.
#include <stdio.h>
#include <stdbool.h>
void main(){
enum SEASONS{
SPRING=1,SUMMER,AUTUMN,WINTER
}season;
int n=4;
season=(enum SEASONS)n;
printf("season=:%d",season);
getchar();
}