C 枚举
学习C - C枚举
使用枚举,您定义一个新的整数类型,其中类型的变量具有可能值的固定范围。
这里是一个定义了名为Weekday的枚举类型的语句的示例:
enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
这个语句定义了一个类型。新类型的名称Weekday遵循枚举关键字,此类型名称称为枚举的标记。
枚举是整数类型,您指定的枚举器将对应于整数值。
默认情况下,枚举器将从零开始,每个连续的枚举器的值都比前一个枚举值多一个。
在这个例子中,星期一到星期日的值将为0到6.您可以声明一个类型为Weekday的变量,并将其初始化为:
enum Weekday today = Wednesday;
这声明一个名为today的变量,并将其初始化为星期三。
定义类型时也可以声明枚举类型的变量。
这是一个定义枚举类型加上两个变量的语句:
enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} today, tomorrow;
这将声明枚举类型Weekday和该类型的今天和明天的两个变量。
当然你也可以在同一个语句中初始化变量,所以你可以这样写:
enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} today = Monday, tomorrow = Tuesday;
因为枚举类型的变量是整数类型,它们可以在算术表达式中使用。你可以这样写上面的语句:
enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} today = Monday, tomorrow = today + 1;
枚举值
您可以显式地为任何或所有枚举器指定自己的整数值。
虽然您用于枚举器的名称必须是唯一的,但是枚举器值本身不需要是唯一的。
以下是如何定义Weekday类型,以便枚举器值从1开始:
enum Weekday {Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
现在,枚举器周一到周日将对应于值1到7。
在枚举数后面有显式值的枚举器将被赋值连续的整数值。
您可以定义枚举来识别卡面值,如下所示:
enum FaceValue { two=2, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace};