1. 程式人生 > >列舉enum型別

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