enum

enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值

我们可以将枚举理解为编译阶段的宏,使用格式:

enum typeName{ valueName1, valueName2, valueName3, …… };

typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量

区别

枚举变量的值只能是类型的某个值。

使用

定义枚举类型的同时定义枚举变量

enum week{Mon = 1, Tues, Wed, Thurs} num;

或者
先定义枚举类型,再定义枚举变量

enum week{Mon = 1, Tues, Wed, Thurs};
enum week num;

特点

  • 不显式说明枚举常量的值, 在没有显示说明的情况下,枚举常量(也就是花括号中的常量名)默认第一个枚举常量的值为0,往后每个枚举常量依次递增1

    enum week{Mon, Tues, Wed, Thurs, Fri, Sat, Sun};

  • 显示说明部分枚举常量的值, 未指定的枚举名的值将依着最后一个指定值向后依次递增(注意是最后一个指定值)

    enum week{Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun};

  • 对枚举变量进行赋值
    一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换后才能赋值

枚举变量的大小

#include <stdio.h>

enum Weekend {
   Sun,
   Mon,
   Tus,
   Wed,
   Tir
} w;

int main(){

        printf("%u\n", sizeof(w));
}

结果: 4
表明一个枚举变量占4个字节

文档更新时间: 2021-03-09 19:10   作者:周国强