列舉資料型別
阿新 • • 發佈:2020-12-27
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 day的day來說,每次只能賦一個值。不要把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