C 基礎 Enum 列舉型別

2021-10-11 18:09:47 字數 1800 閱讀 5473

正文結語

今天來說說 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

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內有七天,一年有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不能超過...