enum詳解

來源:互聯網
上載者:User

定義:一種建立符號常量的方式。
從它的定義中可以看出,enum就是用來定義常量的。與從const不同的是:它是一個常量集合,包含多個常量值。

For example: 

  enum color{red,green,yellow,blue};

也就是說,對於color這個常量,可以取red, green, yellow, blue這四個值。它們對應整數值0,1,2,3。這些常量叫做枚舉量。在預設情況下:將整數賦給枚舉量,第一個枚舉量的值為0,第二個枚舉量的值為1, 後面的以此類推。

當然,也可以自訂它們對應的整數值。如下面的方式:

   enum color{red,green = 10,yellow = 20,blue};

在這種方式定義中:red對應的整數值依然為0,而green和yellow由於已對其賦值,所以原來的預設值被覆蓋,而對於blue,其值也就是在yellow對應的

整數基礎上加1,即21。

缺陷:在枚舉中定義的常量和定義枚舉的範圍相同,而不是屬於枚舉本身。

For example: 

  color col = red;//正確col = ::green;//正確col = color::blue;//錯誤

也正是由於這種缺陷:使得枚舉中的常量值不能在同一檔案中重複定義。

For example: 

 enum test1{first,second = 10};enum test2{first,second,third};

這時編譯器就會提示:error: conflicting declaration 'second'。

注意:由於枚舉量是整型,所以也可被提升為int類型,但是int類型不能自動轉換為枚舉類型。

For example:

        int num = green;int m = red + 10;

這兩種方式都是合法的!
佔用的儲存空間:看到這種定義方式,不免有點手癢,想測試一下它的sizeof()的值。不錯,結果是有點意外;輸出結果為4(GCC編譯器)。為什麼呢?這與具體的編譯器有關:對於取值範圍較小的枚舉,使用一個位元組或更少的空間就足矣。然而,對於包含long類型的枚舉,則使用4個位元組。
應用:

#include <iostream>#include <string>using std::cin;using std::cout;using std::endl;using std::string;enum color{        red,        green,        yellow,        blue};int main(void){    int id;    cout << "Please input the number of color:";    cin >> id;    switch (id)    {        case red:            cout << "You choose red!"<< endl;            break;        case green:            cout << "You choose green!"<< endl;            break;        case yellow:            cout << "You choose yellow!"<< endl;            break;        case  blue:            cout << "You choose blue!"<< endl;            break;        default:            ;    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.