codecamp

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}; 
C 字符类型
C 类型转换
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

C 联合

C 预处理

C 索引

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }