C學習-列舉(九)

Corwien發表於2019-05-13

一、列舉的概念

列舉是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 

相關文章