正文結語
今天來說說 c 語言裡面的列舉型別。在程式中常常會需要對一些現實生活的屬性進行列舉,如性別通常不是男就是女、一周七天、程序狀態定義等。
第一種做法我們可以透過#define
進行巨集定義:
#define gender int
#define male 0
#define female 1
#define day int
#define mon 1
#define tue 2
#define wed 3
#define thu 4
#define fri 5
#define sat 6
#define sun 7
#define processstate int
#define running 1
#define ready 2
#define block 3
但是這樣寫既冗長又容易出現手誤,有時候我們也不關心這個狀態實際代表的值是多少,僅僅是為了區分不同狀態即可,接下來我們就使用 c 語言原本就提供的列舉型別 enum
,來更優雅的完成列舉常量的定義
c enum(列舉)-菜鳥教程
列舉型別(enum)
的語法與結構體(struct)
的語法相似:
enum
[[,...]
];
當然我們同樣可以使用typedef
關鍵字來省略enum ***
的麻煩寫法hh
示例
#include
typedef
enum e_color color;
intmain()
輸出
----- color -----
red: 0
green: 1
blue: 2
sizeof(color): 4
sizeof(int): 4
我們可以看到其實列舉量實際上儲存的就是整型變數(占用記憶體為 4b),而變數值就是列舉變數宣告的順序下標
我們也可以在列舉型別中顯示的指定各個列舉量的值,而沒有定義值的變數會是前乙個變數的遞增:
#include
typedef
enum e_day day;
intmain()
}}
----- days using enum -----
monday is the 1 day of the week
tuesday is the 2 day of the week
wednesday is the 3 day of the week
thursday is the 4 day of the week
friday is the 5 day of the week
saturday is the 6 day of the week
sunday is the 7 day of the week
我們可以看到周二以後的值自動根據前乙個列舉值遞增,如此一來就能避免手抖定義了重複的列舉值,也剩下客觀的編碼量,提高**可讀性和可維護性。
就這,對就這,列舉就這麼簡單,列舉型別背後的值就是乙個遞增的計數,避免程式設計師手動維護每個狀態的值,也提高**的可讀性和可維護性,還不趕緊用起來。
C 列舉型別enum
關鍵字enum用於宣告列舉,列舉是一種值型別,由許多名字的常量 也叫列舉表 組成。例如 const int monday 0 const int tuesday 1 const sunday 7 可以用c 提供的列舉型別 enum week 列舉中每乙個常量都對應著乙個數值,如果不特別設定,列舉從0...
c 列舉 enum 型別
c 列舉 enum 型別 is2120 csdn 1.最平常的方法 public enum suits public void printallsuits z 2012 2 16 17 49 28 pm is2120 csdn 2.擴充套件方法 更通用,更方便一些 public static cla...
C列舉型別enum
在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內有七天,一年有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不能超過...