c\c++複習基礎要點16----枚舉類型

來源:互聯網
上載者:User

枚舉類型:

   文法格式:

          enum 枚舉類型名 {變數值列表};

例如:

     enum  Weekday{sun, mon, tue, wed, thu, fri, set};

聲明了枚舉類型後,就可以定義枚舉類型的變數了。定義枚舉變數的文法格式為:

 

enum 枚舉類型名  標示符;

枚舉類型名  標示符;

 

例如:

     enum  Weekday aday;

也可以把聲明枚舉類型和定義枚舉類型變數合為一步:

     enum{變數列表} 標示符;

 

例如:

     enum {sun, mon, tue, wed, thu, fri, set} aday;

變數aday的值只能是sun到sat之一

 

聲明枚舉類型時,變數值列表中的標示符是一些符號常量,每一個都對應一個確定的整數值。第一個符號常量的值為0,第二為1,以此類推。

也可以在聲明枚舉類型時自行制定符號常量的值,制定的值必須是整數。

例如:

enum Weekday{sun, mon , tue=5, wed, fri,sat};

其中,sun=0、mon=1、tue=5、wed=6、….sat=9.

 

不能把一個整數值直接賦值給一個枚舉類型的變數:

aday=2;       //錯誤

 

但是可以通過強制類型轉換將整數賦值給枚舉類型的變數。

例如:

aday=(Weekday)2;

 

執行個體:

#include<iostream>

using namespace std;

 

void main()

{

     enum Weekday{sun , mon , tue , wed , thu , fri , sat};

     Weekday  day1 , day2;

     int  in1,in2;

     cout<< “請輸入兩個0到6之間的整數:”<<endl;

      cin>>in1>>in2;

      day1=(Weekday)in1;

      day2=(Weekday)in2;

      

      if(day1==day2)

      {

           cout<< “您輸入的都是”;

           switch(day1)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

      }

      else

      {

           cout<< “您輸入的兩天分別是:”;

           switch(day1)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

           

           switch(day2)

           {

                 case sun: cout<< “星期日”<<endl; break;

                 case mon: cout<< “星期一”<<endl; break;

                 case tue: cout<< “星期二”<<endl; break;

                 case wed: cout<< “星期三”<<endl; break;

                 case thu: cout<< “星期四”<<endl; break;

                 case fri: cout<< “星期五”<<endl; break;

                 case sat: cout<< “星期六”<<endl; break;

 

           }

 

 

      }

}

 

 

一道面試題:

 

下面程式碼片段的輸出是:

enum{

 A ,B , C = 1 ,D,

};

 

std::cout<<B<< ‘ ’<<D<<std::endl;

 

A 1 1 B 1 2  C 2 1  D 2 2

 

答案:B

 

預設下”接下來的枚舉子取值是前面一個枚舉子的取值+1“。既然這兩個枚舉子沒有顯式賦值,那麼就按照預設規則辦事,所以B==1,D==2 從這個例子也可以看出,同一枚舉中枚舉子的取值不需要唯一。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.