2014年12月7日 星期日

Enum (Enumeration) 列舉


在C中列舉(Enumeration)型別,就是以關鍵字enum開始加上一個列舉名稱,並以大括號括住要群組管理的常數,例如:

enum Action{stop, sit, stand, walk, run};

上例中宣告一個列舉型態Action,大括號中每一個元素稱為列舉元(enumerator),預設上列舉元從第一個開始的實際數值是0,然後依次遞 增,以上例而言,stop為0、sit為1、stand為2、walk為3、run為4,您也可以自行為列舉元設定數值,例如:

enum Action{stop = 1, sit, stand, walk, run};

上例來說,stop為1,下一個列舉元如果沒有設定數值的話,則自動遞增1,所以sit為2、stand為3、walk為4、run為5,列舉的常數值不 需獨一無二,例如下例:

enum Action{stop = 1, sit, stand = 2, walk, run};

下一個列舉元如果沒有設定數值的話,則自動遞增1,所以上例中stop為1、sit為2、stand為2、walk為3、run為4。

宣告列舉之後,您可以用它來宣告列舉變數,例如:

enum Action action = stop;

上例中action可接受的數值範圍為列舉元中的數值範圍,超出的話可能會有不可預期的行為。
在必要的時候,列舉元的數值可用來與其它數值作運算,例如:

enum Action action = stand;
printf("%d\n", action + 2);

列舉值的數值被取出再進行加2,所以上例中會在文字模式下顯示數值4。

沒有留言:

張貼留言