枚举enum

21.枚举enum:在C语言中其实就是一些符号常量集。直白点说:枚举定义了一些符号,这些符号的本质就是定义int类型的常量,每个符号和一个常量绑定。这个符号就表示一个自定义的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。
枚举符号常量和其对应的常量数字相对来说,数字不重要,符号才重要。符号对应的数字只要彼此不相同即可,没有别的要求。(这些数字是让编译器自动分配的:原则是从0开始依次增加)。
枚举的意义:使用枚举其实就是对1,0这些数字进行符号化编码,这样的好处就是编程时可以不用看数字而直接看符号。符号的意义是显然的,一眼能看出来,而数字所代表的含义则需要看文档。
宏定义也可以将符号和数字绑定起来,都是使用符号而不使用数字。但是两者的区别是:枚举是将多个有关联的符号封装在一个枚举中(多选一),而宏定义是完全散的。当我们要定义一个有限集合时,(比如一星期有7天,一个月有31天,一年有12个月...)用枚举来定义比较适合。当符号常量间彼此没有关联的适合,我们就需要用宏定义。


使用枚举的过程中要注意:不能有重名的枚举类型:即在一个文件中不能有2个或者2个以上的enum被typedef成相同的名字,就跟定义变量的时候全局变量不能定义2个相同的一样。
还有,2个不同的结构体类型内的成员是可以重名的(结构体访问时:变量名.成员),但是2个不同的enum类型中的成员不可以重名(枚举访问时:成员名)。两个#define宏定义是可以重名的,该宏名真正的值取决于最后一次定义的值。

你可能感兴趣的:(枚举enum)