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