juliusun.com
第 39/50 节 冥河C语言教程
枚举类型变量的值是可以一一列举出来的,且值仅限于列举出来的范围内。
枚举类型,定义分成两步:1、定义枚举类型;2、定义枚举变量
枚举类型定义格式如下:
enum 枚举类型名 {常量标识符1,常量标识符2,……,常量标识符N}
注意:枚举类型里面的元素列表,是常量标识符,不需要加类型。C语言中枚举类型内部是当作int类型处理的。系统会自动给第一个常量标识符1赋值为0,第二个常量标识符2赋值为1,以此类推。
例:
注意,枚举类型常量标识符列表成员不需要指定类型。
如果不喜欢系统自动赋值,也可以手动给我枚举类型列表成员赋值。手动赋值时,如果常量标识符已赋值,就是赋值结果。如果常量未赋值,就是前一个元素值加1。第一个元素如果未赋值,就是0。如:
例:
手动赋值例:
手动赋值时部分资料上介绍,是将未赋值的元素从0开始标识。经vs2010测试发现是在前一个值基础加1,无论前一个值是自动赋值还是手动赋值。如果值十分重要,且枚举类型C语言是当作int处理,所以书写代码前可以用%d输出一下,确认编译器赋值方式。如果不想用编译器测试,也可以全部手动赋值。如果全不赋值,第一个元素为0,以后每个递增1,这个标准各个资料上均一致,经vs2010测试同样一致。
枚举类型定义格式如下:
enum 枚举类型名 枚举变量值
例:
枚举类型变量赋值时,只要将可能的值直接通过等号赋值运算符赋值给变量就行了,例:
注意使用列表常量标识时,只需要写常量标识符即可,不需要枚举类型名点.常量标识符。
枚举类型变量也可定义时赋值,例子省略。
枚举类型值必须是定义列表范围内的值,这一条无论是C语言还是编译器,控制的并不严禁,下面的代码在很多编译器上可以编译成功:
多数编译器只要强制转换,就可以对枚举类型随意赋值了,甚至部分编译器支持枚举类型自增自减,所以使用时,请注意。如果不好控制,可以放弃使用枚举类型。
相比结构体、数组等,枚举类型实际开发中应用非常少。
由于从标准和设计初衷出发,枚举值是可列举的,所以如果让用户输入枚举类型,不合适,因为用户输入的内容不一定在定义范围之内。
由于枚举类型使用较少,大家熟悉一下即可,如果需要使用,可以反回来再查手册或教程。例:
效果图类似如下:
效果图非常简单,仅供参考。