摘要

枚举类型(enumerated type),顾名思义,便是将有可能取到的值一一列举并放入一个集合之中,这个集合便可以视作枚举类型。

使用enum关键字,可以创建一个新“类型”并指定它可具有的值,这种类型就叫枚举类型。

例如将一个星期作为集合,它的取值只能是周一到周日,我们便可以使用枚举类型来进行定义,它的语法与结构体类型的语法类似。

代码实现

代码1:创建枚举类型

1
2
3
4
5
6
7
8
9
enum Day{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};

分析

  1. enum Day 这个声明创建了一个Day作为标记名,允许将enum Day作为一个类型名进行使用。
  2. 花括号内的7个标识符枚举了enum Day变量可以取到的所有值。因此,用enum Day创建的变量可以取Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday共7个值。这7个值被称为枚举符(enumerator),又称枚举常量,从技术层面上来讲,枚举常量是int类型的常量。同样,枚举常量也可以被理解成为有名称的常量。只要是在能够用到整型常量的地方就能用到枚举常量,例如定义数组时,数组成员个数就能用枚举常量来带入;switch语句中,case后面的整型常量可以用枚举常量

    代码2:枚举类型的初始化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include<stdio.h>

    enum data{
    high,
    weight,
    feture = 50,
    weath
    }element = weight;

    int main()
    {
    printf(" element = %d\n high = %d\n weight = %d\n feture = %d\n weath = %d\n\n\n", element, high, weight, feture, weath);
    element = feture;
    printf(" element = %d\n high = %d\n weight = %d\n feture = %d\n weath = %d\n", element,high,weight,feture,weath);
    return 0;
    }
    运行结果
    在这里插入图片描述

分析

  1. 在声明枚举类型时可以进行顺道定义enum data类型的变量element并且可以在主函数中对于element的值进行修改,element的取值仅限于 high, weight, feture, weath, 不能用整数对于element进行赋值,原因在于element的数据类型是 enum data,必须同样用enum data类型的值对它赋值,故不能用int等整型对其赋值
  2. 在声明枚举类型时可以对枚举常量的值进行初始化,如上面的feture=50。若不初始化,默认第一个high数值为0,第二个数值weight为1,以此类推;碰到被人为初始化的值后,其再后面一个枚举常量的值也同样是依次加1,如feture为50,weath为51

枚举类型的作用

1.提高程序的可读性和可维护性,用有含义的枚举常量来代替无含义数字
2.和#define定义的标识符相比,枚举常量有类型检查,更加严谨
3.防止了命名污染
4.便于调试
5.定义方便,一次可以定义多个常量

注意
不能在两个枚举类型中使用相同的枚举常量名称,否则会报出重定义的错误
在这里插入图片描述

参考文献

C Primer Plus,第六版, p474-477