[列舉] 使用

定義列舉型態時
在沒有指定的狀態下
C++會自動給常數一個整數值
第一個常數為0、第二個常數為1 ……….以此類推

Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

enum mood{happy,sad,soso}m1,m2; //"happy"被設為0,"sad"被設為1,"soso"被設為2

int main(){

}

[/code]

為什麼C++要為它們設值呢?
因為它把列舉型態視為整數型態
所以使用列舉型態時
實際上是以整數型態處理
要特別注意:
列舉型態可以自動轉換成整數型態
整數型態不可以自動轉換成列舉型態
需要使用特殊格式做轉換
整數型態轉換成列舉型態
列舉型態變數=static_cast<列舉型態名稱> (欲轉換內容);

Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

enum mood{happy,sad,soso}m1,m2; //"happy"被設為0,"sad"被設為1,"soso"被設為2

int main(){

mood m1;

m1=static_cast<mood> (1); //將變數m1設為sad(1)

}
[/code]

定義列舉型態時
可以使用自己設定的列舉值

設定的列舉值
後面的值會由所設定的值開始遞增
可以有多個列舉值相同

Ex:

 

[code language=”cpp”]
enum bits { one=1, two=2, four=4, eight=8 };
1 2 4 8

enum bitstep{first, second=100, third };
0 100 101

enum f { a, b=0 ,c ,d=1 };
0 0 1 1

[/code]

一般輸出列舉型態時
會以整數型態輸出
如果希望可以印出列舉型態的名稱
可以使用for迴圈跟字串實作

Ex:

 

[code language=”cpp”]
#include <iostream>
#include <string>
using namespace std;

enum mood{happy,sad,soso};

int main(void)
{
enum mood m1;

string a[3]={"happy","sad","soso"};

for(m1=happy;m1<=soso;m1=static_cast<mood>(m1+1))
cout << "mood(" << m1 << ")=" << a[m1] << endl;

}
[/code]

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料