列舉enum型別
轉載:https://www.cnblogs.com/shrimp-can/p/5171110.html
一、列舉型別的定義
enum 型別名 {列舉值表};
型別名是變數名,指定列舉型別的名稱。
列舉值表也叫列舉元素列表,列出定義的列舉型別的所有可用值,各個值之間用“,”分開。
語法結構:
enum [列舉名] {e1[=Value1], e2[=Value2] ,… …};
e1、e2… …:稱為列舉常量,列舉成員,也稱為列舉子。
Value1,Value2… …:稱為列舉子值,即列舉值,可忽略不寫,預設從0依次賦值。
例如:
enum color {red,green,blue}; //列舉值分別為0,1,2.
定義列舉型別變數:
[enum] 列舉名 列舉變數名 [=初始化值];
例如:
color paint = red;
或
enum color paint = red;
二、列舉變數宣告(類似結構體)
列舉變數有多種宣告方式:
1.列舉型別定義與變數宣告分開
如:
enum Suit { Diamonds, Hearts, Clubs, Spades };
enum Suit a;
enum Suit b,c;
變數a,b,c的型別都定義為列舉型別enum Suit(類似結構體struct)。
2.列舉型別定義與變數宣告同時進行
如:
enum Suit { Diamonds, Hearts, Clubs, Spades }a,b,c;
此處型別名可以省略,如以下的宣告也是可以的。
enum { Diamonds, Hearts, Clubs, Spades }a,b,c;
3.用typedef先將列舉型別定義為別名,再利用別名進行變數的宣告
有以下幾種方式:
1).typedef enum Suit { Diamonds, Hearts, Clubs, Spades }Suit;
enum Suit a;
enum Suit b,c;
2).typedef enum{ Diamonds, Hearts, Clubs, Spades }Suit;
enum Suit a;
enum Suit b,c;
3).typedef enum Suit { Diamonds, Hearts, Clubs, Spades };
enum Suit a;
enum Suit b,c;
注意:同一程式中不能定義同類型名的列舉型別;不同列舉型別的列舉元素不能同名。
三、列舉語法
1.將會為每個列舉元素分配一個整型值,預設從0開始,逐個加1。
2.也可以在定義列舉型別時對列舉元素賦值,此時,賦值的列舉值為所賦的值,而其他沒有賦值的列舉值在為前一個列舉值加1.
3.列舉值是常量不是變數,和const定義常變數一樣,不能在程式中再為列舉元素賦值。
4. 列舉成員不是簡單字串常量,使用的時候無需新增單、雙引號。
5.列舉成員不可以重複,但是列舉值可以重複。重複列舉值的列舉成員表明它們具有共同性質,所以放在一起。
enum weeks {mon=1,tue=1,wed=1,thu=1,fri=1,sat=2,sun=2};
6.一個整數不能直接賦給一個列舉變數,必須強制進行型別轉換才能賦值。
enum weeks day; day =(weeks)2;
四、列舉型與整型的轉換
列舉型可以隱式的轉換為int型,int型不能隱式的轉換為列舉型。
int型不能隱式轉換為列舉型
列舉型可以隱式的轉換為int型