1. 程式人生 > 其它 >列舉資料型別

列舉資料型別

技術標籤:C語言特性enum

1:定義

如果一個變數只有幾種可能的值,則可以定義為列舉型別(enumeration),所謂列舉就是把可能的值一一列舉出來。
宣告列舉型別用enum開頭 例如:

enum Weekday{sun, mon, tue, wed, thu, fri, sat};

上面聲明瞭一個列舉型別enum Weekday,使用這個型別定義變數 例如

enum Weekday weekday, day;

2: 使用

對於列舉元素列表只能在宣告的時候進行賦值,後面使用的時候不能在進行賦值。

可以:

enum Weekday{sun=1, mon, tue, wed, thu,
fri, sat};

不能:

sun = 1

只需要對首元素賦值,後面元素會自動加1

/*************************************************************************
    > File Name: test.c
    > Author: kayshi
    > Mail: [email protected]
    > Created Time: Sat 26 Dec 2020 02:02:04 PM CST
 ************************************************************************/
#include <stdio.h> enum Weekday{sun=1, mon, tue, wed, thu, fri, sat}; int main() { enum Weekday day; day = sun; printf("%d\n", day); day = mon; printf("%d\n", day); day = tue; printf("%d\n", day); day = wed; printf("%d\n"
, day); day = thu; printf("%d\n", day); day = fri; printf("%d\n", day); day = sat; printf("%d\n", day); }
[email protected]:~/code/enum$ ./a.out 
1
2
3
4
5
6
7

也可以在定義的時候為每個元素單獨進行賦值
如果所有的元素都不賦值,預設從0開始賦值

3:列舉陣列

需要注意的是對於定義的列舉變數enum Weekday dayday來說,每次只能賦一個值。不要把day當成陣列一樣使用像這樣 day[1]。

如果要使用陣列要定義列舉變數陣列

enum Weekday day[5];

可以在定義的時候對每個成員進行初始化,也可以在後面進行單獨賦值。

/*************************************************************************
    > File Name: test.c
    > Author: kayshi
    > Mail: [email protected]
    > Created Time: Sat 26 Dec 2020 02:02:04 PM CST
 ************************************************************************/

#include <stdio.h>

enum Weekday{sun=1, mon, tue, wed, thu, fri, sat};


int main()
{
    int i;
    enum Weekday day[5] = {sun, sun, mon, mon, wed};
    for(i = 0; i < 5; i++)
    {
        printf("%d\n", day[i]);
    }
}
[email protected]:~/code/enum$ ./a.out 
1
1
2
2
4