C语言 || 枚举类型(Enum)

枚举类型的定义

enum typeName{valueName1,valueName2,.......};

enum是一个新的关键字,专门用来定义枚举类型;typeName是枚举类型的名字;valueName1是每个值对应的名字的列表,注意最后;不能少

使用enum的原因:在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并
且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一个月只有十二个月。对于这类问题,一般会使用#define,但是这样做会导致宏名过多,代码松散。C语言提供一种枚举类型(Enum)类型,能够列出所有可能的取值,并给它们取一个名字。

例如:

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

我们可以为里面的值赋值,因为枚举值默认从0开始,往后逐个加1;所以,Mon,Tues…对应的值分别为0,1…

我们可以给每个名字都指定一个值:

enum week{Mon=1, Tues=2, Wed,=3 Thurs=4, Fri=5, Sat=6, Sun=7};

也可以直接给第一个值赋值,其他不赋值。

定义枚举变量

枚举是一种类型,可以通过它定义枚举变量:

enum week a,b,c;

也可以在定义枚举类型的同时定义枚举变量:

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

有了枚举变量,就可以把列表中的值赋给它:

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

需要注意的两点是:

  1. 枚举列表中的Mon这些标识符的作用范围是全局的(严格来说是main()函数内部),不能再定义与它们名字相同的变量。
  2. Mon这些都是常量,不能为它们赋值,只能将它们的值赋给其他变量。所以不能用&取得它们的地址。

**枚举和宏非常类似:**宏在预处理阶段的时候将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。

枚举类型变量需要存放的是一个整数,所以它的长度与int相同。

猜你喜欢

转载自blog.csdn.net/weixin_44594976/article/details/89279040