列舉型別,顧名思義,「枚」作為量詞,作「個」講,那麼列舉,就是乙個乙個的列舉,如果一件事情能夠被乙個乙個的列舉,那麼它的數量肯定就是有限的,否則是不能被一一枚舉出來的。所以列舉型別即為能被列舉的常量的乙個集合。
在生活中,列舉的例子隨處可見,比如禮拜幾,那麼就可以作為乙個列舉變數。這個變數所儲存的值,是有限的,且,能被我們所列舉。再比較說,性別。它也可以作為乙個列舉型別,我們知道,性別也就只有「男」或者「女」,它是可以被我們所列舉的。它能很直觀的表達出我們所定義的事件。
如:定義乙個列舉型別的變數,雖然不知道變數具體是什麼值,但能知道它可能會有哪些值,這樣,這樣,就能對程式中所出現的變數的取值有乙個很好的估量,從而使程式的編寫更加順利。
列舉型別的定義寫結構體的定義相似,其形式為:
enum
列舉名
列舉變數
;如果列舉沒有初始化
, 即省掉
"=整型常數"時
, 則從第乙個識別符號開始,依次
次賦給識別符號
0, 1, 2, ...
。但當列舉中的某個成員賦值後
, 其後的成員按依次加1
的規則確定其值。
例如下列列舉說明後
, x1, x2, x3, x4
的值分別為
0, 1, 2, 3
。enum stringx;
當定義改變成
: enum string
x; 則
x1=0, x2=0, x3=50, x4=51
注意:
1. 列舉中每個成員
(識別符號
)結束符是
",",
不是";",
最後乙個成員可省略
","。
2. 初始化時可以賦負數
, 以後的識別符號仍依次加1。
3. 列舉變數只能取列舉說明結構中的某個識別符號常量。
例如:
enum string
; enum strig x=x3;
此時,
列舉變數
x實際上是7。
4.在外部,我們可以對列舉變數進行賦值,不過,得要進行型別轉換。
如果我們不進行型別輪換,即如下所示進行賦值:
x = 3;
是不允許是,如果對
x進行賦值,只能對3進行型別轉換.即:
x = (string)3;
那麼這樣就對了.
如果給x
賦的不是乙個整形的數,而是乙個字元型的,如:
x = (string)』a』;
那麼這時候
x的值並不是字元
』a』,
而是』a』
的ascii
碼,我們知道,在列舉型別中,各常量的值只能是整形的,所以在對上例會自動的將
』a』轉換成乙個整數值.從記憶體的角度來看來話,其實
c/c++
中整形和字元型的變數是一樣的,它們之間可以互相轉換.
下面是乙個使用列舉型別的例子.
#include
using namespace
std;
enum
day ;//saturday = 0 by default, sunday = 0 as well
void
prnt (day day)// print whether a day is a 'weekend' or a "weekday".
int main()
// print whether a day is a 'weekend' or a "weekday".
prnt (saturday);
prnt (sunday);
prnt (monday);
prnt (tuesday);
prnt (wednesday);
prnt (thursday);
prnt (friday);
return0;}
enum 在c中的使用
如果乙個變數你需要幾種可能存在的值,那麼就可以被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也可以說是可能的值一一例舉出來。舉個例子來說明一吧,為了讓大家更明白一點,比如乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就...
enum 在c中的使用
假設乙個變數你須要幾種可能存在的值,那麼就能夠被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也能夠說是可能的值一一例舉出來。舉個樣例來說明一吧,為了讓大家更明確一點,比方乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就...
enum 在c中的使用 列舉型別)
如果乙個變數你需要幾種可能存在的值,那麼就可以被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也可以說是可能的值一一例舉出來。舉個例子來說明一吧,為了讓大家更明白一點,比如乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就...