羅列範例(Enumerated Types),簡稱羅列,是C言語中一種非常實用的數據範例。它容許順序員定義一組命名的整型常量,這些常量存在整型值,平日用來表示一組相幹的、存在牢固值的羅列集。控制羅列範例,可能幫助開辟者編寫愈加清楚、易於懂得跟保護的代碼。
羅列範例的基本不雅點
1. 羅列的定義
羅列是一種用戶自定義的數據範例,它由一系列命名的整型常量構成。這些常量在定義時被付與了一個整數值,平日從0開端,順次遞增。
enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
在這個例子中,Weekday
是羅列範例,Mon
到 Sun
是羅列值,它們的整數值分辨為0到6。
2. 羅列值的默許整數值
假如羅列值不顯式指定整數值,則從0開端順次遞增。比方:
enum Size { Small, Medium, Large, ExtraLarge };
在這個例子中,Small
的整數值為0,Medium
為1,以此類推。
3. 羅列值的自定義整數值
羅列值也可能顯式指定整數值:
enum Size { Small = 10, Medium = 20, Large = 30, ExtraLarge = 40 };
在這個例子中,Small
的整數值為10,Medium
為20,以此類推。
羅列範例的利用
1. 羅列作為變量範例
羅列範例可能作為變量範例,比方:
enum Weekday today = Mon;
在這個例子中,today
是一個 Weekday
範例的羅列變量,它的值為 Mon
。
2. 羅列與switch語句
羅列範例非常合適與 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
語句根據傳入的羅列值打印出對應的天稱號。
羅列範例的高等特點
1. 強範例羅列
C99標準引入了強範例羅列,它處理了傳統羅列範例的缺點。強範例羅列利用 enum class
語法來申明,比方:
enum class Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
在這個例子中,Weekday
是強範例羅列範例,它的羅列值不克不及被隱式轉換為整數,也無法與整數停止比較。
2. 羅列與typedef
可能利用 typedef
關鍵字為羅列範例定義別號,比方:
typedef enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun } WeekdayType;
在這個例子中,WeekdayType
是 Weekday
羅列範例的別號。
總結
羅列範例是C言語中一種非常有效的數據範例,它可能幫助順序員編寫愈加清楚、易於懂得跟保護的代碼。經由過程控制羅列範例,開辟者可能解鎖編程新地步,進步代碼品質。