ENUM[程式語言中的一種數據類型]

ENUM[程式語言中的一種數據類型]
ENUM[程式語言中的一種數據類型]
更多義項 ▼ 收起列表 ▲

enum是計算機程式語言中的一種數據類型。枚舉類型:在實際問題中,有些變數的取值被限定在一個有限的範圍內。例如,一個星期內只有七天,一年只有十二個月,一個班每周有六門課程等等。如果把這些量說明為整型,字元型或其它類型顯然是不妥當的。為此,C語言提供了一種稱為“枚舉”的類型。在“枚舉”類型的定義中列舉出所有可能的取值,被說明為該“枚舉”類型的變數取值不能超過定義的範圍。應該說明的是,枚舉類型是一種基本數據類型,而不是一種構造類型,因為它不能再分解為任何基本類型。

定義說明

1. 枚舉類型定義的一般形式為:

enum 枚舉名{ 枚舉值表 };

在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。

例如:

該枚舉名為weekday,枚舉值共有7個,即一周中的七天。凡被說明為weekday類型變數的取值只能是七天中的某一天。

2. 枚舉變數的說明

如同結構體(struct)和共用體(union)一樣,枚舉變數也可用不同的方式說明,即先定義後說明,同時定義說明或直接說明。

設有變數a,b,c被說明為上述的weekday,可採用下述任一種方式:

記憶體空間

enum是枚舉型,所占記憶體空間恆等於4字;union是共用體,成員共用一個變數緩衝區。

賦值和使用

枚舉類型在使用中有以下規定:

1. 枚舉值是常量,不是變數。不能在程式中用賦值語句再對它賦值。

2. 枚舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,sat值為6。

只能把枚舉值賦予枚舉變數,不能把元素的數值直接賦予枚舉變數。如一定要把數值賦予枚舉變數,則必須用強制類型轉換。

如:

特別注意:在VS2010等編譯器中,強制轉換格式應為:(weekday)2,如果前面加上了enum,編譯時會出現“類型重定義”的錯誤。

其意義是將順序號為2的枚舉元素賦予枚舉變數a,相當於:

還應該說明的是枚舉元素不是字元常量也不是字元串常量,使用時不要加單、雙引號。

3. 如果枚舉值與一些關鍵字衝突,例如:

由於程式有可能使用了iostream,並且使用了命名空間std,這時如果直接使用end進行賦值就有可能出現“不明確”符號的錯誤。解決此問題,有兩個方法:

(1)定義枚舉值時應避免使用常用關鍵字,可以加前綴進行區分

例如:

(2)可以在枚舉值前面加入枚舉類型:course::end

用法

Enum定義

Enum是enumeration(列舉)的簡寫形式,包含在java.lang包中.熟悉C, C++, C#, 或 Pascal的人應該對列舉有所了解,先看個例子:

接口方法實現列舉

一個enum是定義一組值的對象,它可以包括零個或多個值成員.它是屬於enum類型的,一個enum對象中不可有兩個或多個相同的屬性或值.在此之前的java程式設計師一般是 用接口的方法實現列舉的,如 :

Enum實例

引入了enum的java的列舉的編寫方便了許多,只須定義一個enum型的對象.enum對象的值都會自動獲得一個數字值,從0開始,依次遞增.看一個比較簡單的enum實現的例子:

運行上述代碼你會得到 以下結果:

winter

spring

summer

fall

Enum的屬性調用:

下面的代碼展示了調用enum對象的方法,這也是它通常的用法:

為Enums添加屬性和方法

enums也可以象一般的類一樣添加方法和屬性,你可以為它添加靜態和非靜態的屬性或方法,這一切都象你在一般的類中做的那樣.

就是這么的簡單.但是有一點是需要注意的,那就是enums的值列表必須緊跟在enum聲明,不然編譯時將會出錯.

Enums 構造函式 :

和類一樣enums也可以有自己的構造函式

儘管enums有這么多的屬性,但並不是用的越多越好,如果那樣還不如直接用類來的直接.enums的優勢在定義int最終變數僅當這些值有一定特殊含義時.但是如果你需要的是一個類,就定義一個類,而不是enum.

相關詞條

相關搜尋

熱門詞條

聯絡我們