枚举

枚举

1. 需求

  • 举个例子,比如:一星期有7天,请定义数据表示星期一到星期天

1.1 传统方法

  • 使用#define 来完成

    • define MON 1

    • define TUE 2

    • define WED 3

    • define THE 4

    • define FRI 5

    • define SAT 6

    • define SUN 7

  • 分析:看起来代码量较多,且不好管理

2 . 基本介绍

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

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

3.快速入门

#include<stdio.h>
void main(){
    enum DAY{
        MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6,SUN=7
    };//这里DAY就是枚举类型包含了7个枚举元素
    enum DAY day;//enum DAY是枚举类型,day是枚举变量
    day = WED;//给枚举变量day赋值,值就是某个枚举元素
    printf("%d",day);
    getchar();
}

4 . 枚举的遍历

  • C语言中,枚举类型是被当作int 或者unsigned int 类型来处理的,枚举类型必须连续是可以实现有条件的遍历。以下实例使用for来遍历枚举的元素
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++){//要求枚举元素是连续赋值
        printf("枚举元素:%d",day);
    }
    getchar();
    return 0;
}

5 . switch中使用枚举

  • C语言中,switch中可以使用枚举类型
int 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();
    return 0;
}

6.枚举类型使用注意事项和细节

  • 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1
  • 在定义枚举类型使改变枚举元素的值
enum DAY{
    MON,TUE,WED,THE=9,TRI,SAT,SUN//如果没有给赋值,就会按照顺序赋值
}day;
//表示定义了一个枚举类型enum DAY,同时定义了一个变量day
//说明 FRI SAT SUN 就是10 11 12
  • 枚举变量的定义的形式:先定义枚举类型,后定义枚举变量
enum DAY{
    MON=1,TUE,WED,THE,TRI,SAT,SUN
};
enum DAY day;
  • 枚举变量的定义形式2:定义枚举类型的同时定义枚举变量
enum DAY{
    MON=1,TUE,WED,THE,FRI,SAT,SUN
}day;
  • 枚举变量的定义形式3:省略枚举名称,直接定义枚举变量
enum{
    MON=1,TUE,WED,THE,FRI,SAT,SUN
}day;
//这样使用枚举,该枚举只能使用一次
  • 不可以将整数转换为对应的枚举值
    • 不能直接将一个整数,赋给枚举变量,但是可以将整数转成枚举类型再赋给枚举变量
int main(){
    enum SEASONS{SPRING=1,SUMMER,AUTUMN,WINTER};
    enum SEASONS season;
    int n=4;
    season = (enum SEASONS)n;
    printf("season=%d",season);
    getchar();
    rerurn 0;
}
上一篇:Effective c++


下一篇:java ENUM 枚举