C 語言中的 enum
我們有些時候需要使用一些固定的名稱來代表固定的數值,比如在計算你的課程成績的時候,有的課程會出現用英文字母 A-F 來打分,這個時候你需要換算為一個固定的分值來計算平均分。要實現這個功能,你可以選擇在程序的開始定義一系列的常量,但是這樣的定義會非常繁瑣,而且不方便維護。這個時候就出現了一種變量的類型,枚舉。
1. 聲明 enum
聲明一個枚舉類型,可以采用關鍵字 enum
加上一個自定義的名稱,再加上一系列的枚舉值。
enum Score{
A = 5,
B = 4,
C = 3,
D = 2,
E = 1,
F = 0
};
當讓你也可以采用其默認值,默認情況下,枚舉的數值是整數 0 開始的,然后遞加 1 。
enum Score{F, E, D, C, B, A};
這個定義的枚舉和之前介紹的那個效果是一致的。
同時你還可以采用默認值與自定義值混合的方式來定義一個枚舉。
enum Score{
E = 1,
F,
D = 5,
C,
B = 0,
A
};
在上面的定義中, E
的值為 1 , F
的值為 2 , D
的值為 5 , C
的值為 6 , B
的值為 0 , A
的值為 1 。
2. 使用 enum
一旦定義了一個 enum
那么其值是不能被改變的。使用起來如同查字典一樣,通過一個字符或者字符串來取得對應的數值。
3. 示例程序
#include <stdio.h>
int main()
{
enum Score
{
A = 5,
B = 4,
C = 3,
D = 2,
E = 1,
F = 0
};
enum Score score1, score2, score3;
score1 = A;
score2 = F;
score3 = D;
printf("score1: %d, score2: %d, score3: %d\n", score1, score2, score3);
return 0;
}
運行結果:
score1: 5, score2: 0, score3: 2
程序中聲明了一個枚舉類型,用來映射不同的成績。使用過程中聲明了 3 個變量,然后對變量賦值。這個過程就是一個映射的過程。當對變量賦值后,變量中存儲的就是整數。最后,我們將變量中的值輸出。
4. 小結
對于枚舉其實和之前定義常量是一致的,一旦定義就不能修改或者再次定義。如果嘗試修改或者再次使用之前定義中的枚舉值,就會出現編譯錯誤。