C enum(列舉)工具

2021-09-11 02:41:53 字數 1862 閱讀 8438

趙者也 關注

c++ 的 enum 工具提供了另一種建立符號常量的方式,這種方式可以替代 const。它還允許定義新型別,但必須按嚴格的限制進行。使用 enum 的語法與使用結構體相似。

enum demoenum ;
預設情況下,將整數值賦給列舉量,第乙個列舉值為 0,第二個為 1,依次類推。可以通過顯式地指定整數值來覆蓋預設值。

可以用列舉名來宣告這種型別變數:

demoenum mydemoenum;
列舉型別變數具有一些特殊屬性:

mydemoenum = demothree;   // 正確

mydemoenum = 20; // 錯誤

因此,mydemoenum 變數受到限制,只有 3 個可能的值(為保證最大的可移植性,應將把非 enum 值賦給 enum 變數視為錯誤)。

mydemoenum = demoone;    // 正確

++mydemoenum; // 錯誤

mydemoenum = demoone + demotwo; // 錯誤

為了獲得最大限度的可移植性,應採納較嚴格的限制。

int demonum = demothree;    //正確

mydemoenum = 2; //錯誤

demonum = 4 + demoone; //正確

demonum = demotwo + demoone; //正確

mydemoenum = demoenum(1);   //正確
如果試圖對乙個不適當的值進行強制型別轉換,將出現什麼情況?結果是不確定的,這意味著這樣做不會出錯,但不能以來得到的結果:

mydemoenum = demoenum(88);  // 結果是不確定的
enum ;
enum ;
指定的值必須是整數。也可以只顯示地定義其中一些列舉量的值:

enum ;
這裡,red 在預設時為 0,後面沒有被初始化的列舉量的值將比其前面的列舉量大 1。因此,orange 為 1,green 為 51,blue 為 52。

可以建立多個值相同的列舉量:

enum ;
其中,red、orange 都為 0,yellow、green 都為 1,blue 為 2。

enum mycolor ;

mycolor flagcolor;

則下面的語句是合法的:

flagcolor = mycolor(13);
列舉的取值範圍定義如下。首先要找出上限,需要知道列舉量的最大值。找到大於這個最大值的、最小的 2 的冪,將它減去 1,得到的便是取值範圍的上限。例如,mycolor的最大值是16。在 2 的冪中,比這個數大的最小值為 32,因此取值範圍的上限為 31。要計算下限,需要知道列舉量的最小值。如果它不小於 0,則取值範圍的下限為0;否則,採用與尋找上限方式相同的方式,但加上負號。例如,如果最小的列舉量為 -6,而比它小的、最大的 2 的冪是 -8(加上負號),因此下限為 -7。

選擇用多少空間來儲存列舉由編譯器決定。對於取值範圍較小的列舉,使用乙個位元組或更少的空間;而對於包含 long 型別值的列舉,則使用 4 個位元組。

C enum列舉型別

列舉型別 enumeration 是c 中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。如果乙個變數只有幾種可能的值,可以定義為列舉 enumeration 型別。所謂 列舉 是指將變數的值一一枚舉出來,變數的值只能在列舉出來的值的範圍內。建立列舉,需要使用關鍵字enum。列舉型別的一般...

c enum 列舉關鍵字

一般的定義方式如下 enum enum type name enum variable name 注意 enum type name 是自定義的一種資料資料型別名,而enum variable name 為enum type name型別的乙個變數,也就是我們平時常說的列舉變數。實際上enum ty...

C ENUM列舉 遍歷獲取值 名稱 註解

先定義乙個類來儲存資料 public class iteminfo public string name public string description 要獲取的列舉如下 public enum myenum迴圈獲取的 如下 反射 迴圈 獲取資料 listitemlist new list ty...