罗列范例(Enumerated Types),简称罗列,是C言语中一种非常实用的数据范例。它容许顺序员定义一组命名的整型常量,这些常量存在整型值,平日用来表示一组相干的、存在牢固值的罗列集。控制罗列范例,可能帮助开辟者编写愈加清楚、易于懂得跟保护的代码。
罗列是一种用户自定义的数据范例,它由一系列命名的整型常量构成。这些常量在定义时被付与了一个整数值,平日从0开端,顺次递增。
enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
在这个例子中,Weekday
是罗列范例,Mon
到 Sun
是罗列值,它们的整数值分辨为0到6。
假如罗列值不显式指定整数值,则从0开端顺次递增。比方:
enum Size { Small, Medium, Large, ExtraLarge };
在这个例子中,Small
的整数值为0,Medium
为1,以此类推。
罗列值也可能显式指定整数值:
enum Size { Small = 10, Medium = 20, Large = 30, ExtraLarge = 40 };
在这个例子中,Small
的整数值为10,Medium
为20,以此类推。
罗列范例可能作为变量范例,比方:
enum Weekday today = Mon;
在这个例子中,today
是一个 Weekday
范例的罗列变量,它的值为 Mon
。
罗列范例非常合适与 switch
语句一同利用,因为它可能清楚地表示一组相干的整型常量。以下是一个示例:
enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
void printDayName(enum Weekday day) {
switch (day) {
case Mon: printf("Monday\n"); break;
case Tue: printf("Tuesday\n"); break;
case Wed: printf("Wednesday\n"); break;
case Thu: printf("Thursday\n"); break;
case Fri: printf("Friday\n"); break;
case Sat: printf("Saturday\n"); break;
case Sun: printf("Sunday\n"); break;
default: printf("Invalid day\n");
}
}
int main() {
printDayName(Fri);
return 0;
}
在这个例子中,printDayName
函数利用 switch
语句根据传入的罗列值打印出对应的天称号。
C99标准引入了强范例罗列,它处理了传统罗列范例的缺点。强范例罗列利用 enum class
语法来申明,比方:
enum class Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
在这个例子中,Weekday
是强范例罗列范例,它的罗列值不克不及被隐式转换为整数,也无法与整数停止比较。
可能利用 typedef
关键字为罗列范例定义别号,比方:
typedef enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun } WeekdayType;
在这个例子中,WeekdayType
是 Weekday
罗列范例的别号。
罗列范例是C言语中一种非常有效的数据范例,它可能帮助顺序员编写愈加清楚、易于懂得跟保护的代码。经由过程控制罗列范例,开辟者可能解锁编程新地步,进步代码品质。