c语言枚举
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);
}