C/C++中枚舉類型(enum)

        如果一個變量你需要幾種可能存在的值,那麼就可以被定義成爲枚舉類型。之所以叫枚舉就是說將變量或者叫對象可能存在的情況也可以說是可能的值一一例舉出來。

  舉個例子來說明一吧,爲了讓大家更明白一點,比如一個鉛筆盒中有一支筆,但在沒有打開之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裏有兩種可能,那麼你就可以定義一個枚舉類型來表示它!
enum box{pencil,pen};//這裏你就定義了一個枚舉類型的變量叫box,這個枚舉變量內含有兩個元素也稱枚舉元素在這裏是pencil和pen,分別表示鉛筆和鋼筆。

  這裏要說一下,如果你想定義兩個具有同樣特性枚舉類型的變量那麼你可以用如下的兩種方式進行定義!

enum box{pencil,pen}; 
 
enum box box2;//或者簡寫成box box2;

  再有一種就是在聲明的時候同時定義。

enum {pencil,pen}box,box2; //在聲明的同時進行定義!

  枚舉變量中的枚舉元素系統是按照常量來處理的,故叫枚舉常量,他們是不能進行普通的算術賦值的,(pencil=1;)這樣的寫發是錯誤的,但是你可以在聲明的時候進行賦值操作!

enum box{pencil=1,pen=2};

  但是這裏要特別注意的一點是,如果你不進行元素賦值操作那麼元素將會被系統自動從0開始自動遞增的進行賦值操作,說到自動賦值,如果你只定義了第一個那麼系統將對下一個元素進行前一個元素的值加1操作,例如

enum box{pencil=3,pen};//這裏pen就是4系統將自動進行pen=4的定義賦值操作!

  前面說了那麼多,下面給出一個完整的例子大家可以通過以下的代碼的學習進行更完整的學習!

#include <iostream> 
using namespace std; 
 
void main(void) 

    enum egg {a,b,c}; 
    enum egg test; //在這裏你可以簡寫成egg test; 
 
    test = c; //對枚舉變量test進行賦予元素操作,這裏之所以叫賦元素操作不叫賦值操作就是爲了讓大家明白枚舉變量是不能直接賦予算數值的,例如(test=1;)這樣的操作都是不被編譯器所接受的,正確的方式是先進行強制類型轉換例如(test = (enum egg) 0;)! 
 
    if (test==c) 
    { 
        cout <<"枚舉變量判斷:test枚舉對應的枚舉元素是c" << endl; 
    } 
 
    if (test==2) 
    { 
        cout <<"枚舉變量判斷:test枚舉元素的值是2" << endl; 
    } 
 
    cout << a << "|" << b << "|" << test <<endl; 
 
    test = (enum egg) 0; //強制類型轉換 
    cout << "枚舉變量test值改變爲:" << test <<endl; 
    cin.get(); 
}

  看到這裏要最後說一個問題,就是枚舉變量中的枚舉元素(或者叫枚舉常量)在特殊情況下是會被自動提升爲算術類型的!

#include <iostream> 
using namespace std; 
 
void main(void) 

    enum test {a,b}; 
    int c=1+b; //自動提升爲算術類型 
    cout << c <<endl; 
    cin.get(); 
}

發佈了39 篇原創文章 · 獲贊 9 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章