一、列舉的概念
列舉是C語言中的一種基本資料型別,並不是構造型別,它可以用於宣告一組常數。當一個變數有幾個固定的可能取值時,可以將這個變數定義為列舉型別。比如,你可以用一個列舉型別的變數來表示季節,因為季節只有4種可能的取值:春天、夏天、秋天、冬天。
二、列舉型別的定義
一般形式為:enum 列舉名 {列舉元素1,列舉元素2,……};
enum Season {spring, summer, autumn, winter};
三、列舉變數的定義
前面只是定義了列舉型別,接下來就可以利用定義好的列舉型別定義變數。
跟結構體一樣,有3種方式定義列舉變數
1.先定義列舉型別,再定義列舉變數
enum Season {spring, summer, autumn, winter};
enum Season s;
2.定義列舉型別的同時定義列舉變數
enum Season {spring, summer, autumn, winter} s;
3.省略列舉名稱,直接定義列舉變數
enum {spring, summer, autumn, winter} s;
上面三種方式定義的都是列舉變數s
四、列舉使用的注意
1> C語言編譯器會將列舉元素
(spring、summer等)作為整型
常量處理,稱為列舉常量。
2> 列舉元素的值取決於定義時各列舉元素排列的先後順序。預設情況下,第一個列舉元素的值為0,第二個為1,依次順序加1。
enum Season {spring, summer, autumn, winter};
也就是說spring的值為0,summer的值為1,autumn的值為2,winter的值為3
3> 也可以在定義列舉型別時改變列舉元素的值
enum season {spring, summer=3, autumn, winter};
沒有指定值的列舉元素,其值為前一元素加1。也就說spring的值為0,summer的值為3,autumn的值為4,winter的值為5
五、列舉變數的基本操作
1.賦值
可以給列舉變數賦列舉常量或者整型值
enum Season {spring, summer, autumn, winter} s;
s = spring; // 等價於 s = 0;
s = 3; // 等價於 s = winter;
2.遍歷列舉元素
enum Season {spring, summer, autumn, winter} s;
// 遍歷列舉元素
for (s = spring; s <= winter; s++) {
printf("列舉元素:%d
", s);
}
輸出結果:
列舉元素:0
列舉元素:1
列舉元素:2
列舉元素:3