枚舉類型的使用方法enum

1、枚舉類型的使用方法 
通常的定義方式以下:
enum enum_type_name
{
   ENUM_CONST_1,
   ENUM_CONST_2,
   ...
   ENUM_CONST_n
} enum_variable_name;

注意:enum_type_name 是自定義的一種數據數據類型名,而enum_variable_name 爲enum_type_name類型的一個變量,也就是咱們平時常說的枚舉變量。實際上enum_type_name類型是對一個變量取值範圍的限定,而花括號內是它的取值範圍,即enum_type_name 類型的變量enum_variable_name 只能取值爲花括號內的任何一個值,若是賦給該類型變量的值不在列表中,則會報錯或者警告。ENUM_CONST_一、ENUM_CONST_二、...、ENUM_CONST_n,這些成員都是常量,也就是咱們平時所說的枚舉常量(常量通常用大寫)。

enum 變量類型還能夠給其中的常量符號賦值,若是不賦值則會從被賦初值的那個常量開始依次加1,若是都沒有賦值,它們的值從0 開始依次遞增1。如分別用一個常數表示不一樣顏色:
enum Color
{
   GREEN = 1,
   RED,
   BLUE,
   GREEN_RED = 10,
   GREEN_BLUE
}ColorVal;

其中各常量名錶明的數值分別爲:
   GREEN = 1
   RED = 2
   BLUE = 3
   GREEN_RED = 10
   GREEN_BLUE = 11

2、枚舉與#define 宏的區別 
下面再看看枚舉與#define 宏的區別:
1#define 宏常量是在預編譯階段進行簡單替換。枚舉常量則是在編譯的時候肯定其值。
2)通常在編譯器裏,能夠調試枚舉常量,可是不能調試宏常量。
3)枚舉能夠一次定義大量相關的常量,而#define 宏一次只能定義一個。

留兩個問題:
A),枚舉能作到事,#define 宏能不能都作到?若是能,那爲何還須要枚舉?
B),sizeof(ColorVal)的值爲多少?爲何?




enum定義相似與下面這樣
enum Color {
          Red,
         Gray,
         Blue
};
用起來可能像這樣:
Color color = Red;
switch(color) {
case Red:
        ........
case Gray:
        ........
case Blue:
        ........
}
2
先說爲何Red,不能寫成Color::Red,後面這種寫法彷佛更符合咱們的習慣。緣由是:
在C++中,枚舉類型中定義的常量,屬於定義枚舉的做用域,而不屬於這個枚舉類型;
咱們能夠這樣寫:
    Color color = ::Red;
卻不能這樣寫:
    Color color = Color::Red
3
關於枚舉類型所佔用的內存大小,在stackoverflow中有關於這樣的一個帖子,我的認爲解釋的比較合理。
其中的一句解釋是:之因此是4個字節是由於enum類型是做爲一個int來存儲的。
相關文章
相關標籤/搜索