enum 在c中的使用

2021-09-06 19:37:35 字數 3027 閱讀 1204

假設乙個變數你須要幾種可能存在的值,那麼就能夠被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也能夠說是可能的值一一例舉出來。 

舉個樣例來說明一吧,為了讓大家更明確一點,比方乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就能夠定義乙個列舉型別來表示它!

enum box;//

這裡你就定義了乙個列舉型別的變數叫box,這個列舉變數內含有兩個元素也稱列舉元素在這裡是pencil和pen,分別表示鉛筆和鋼筆。

這裡要說一下,假設你想定義兩個具有相同特性列舉型別的變數那麼你能夠用例如以下的兩種方式進行定義!

enum box;  

enum box box2;//

或者簡寫成box box2;

再有一種就是在宣告的時候同一時候定義。

enum box,box2; //

在宣告的同一時候進行定義!

列舉變數中的列舉元素系統是依照常量來處理的,故叫列舉常量,他們是不能進行普通的算術賦值的,(pencil=1;)這種寫發是錯誤的,可是你能夠在宣告的時候進行賦值操作!

enum box;

可是這裡要特別注意的一點是,假設你不進行元素賦值操作那麼元素將會被系統自己主動從0開始自己主動遞增的進行賦值操作,說到自己主動賦值,假設你僅僅定義了第乙個那麼系統將對下乙個元素進行前乙個元素的值加1操作,比如

enum box;//

這裡pen就是4系統將自己主動進行pen=4的定義賦值操作!

前面說了那麼多,以下給出乙個完整的樣例大家能夠通過以下的**的學習進行更完整的學習!

#include   

using

namespace std;  

void

main(void)  

;  enum egg test; //

在這裡你能夠簡寫成egg test; 

test =

c; //

對列舉變數test進行賦予元素操作,這裡之所以叫賦元素操作不叫賦值操作就是為了讓大家明確列舉變數是不能直接賦予算數值的,比如(test=1;)這種操作都是不被編譯器所接受的,正確的方式是先進行強制型別轉換比如(test =

(enum egg) 0;)

! if (test==c)  

if (test==2)  

cout

<< a << "|" << b << "|" << test <= (enum egg) 0; //

強制型別轉換 

cout

<< "列舉變數test值改變為:" << test }看到這裡要最後說乙個問題,就是列舉變數中的列舉元素(或者叫列舉常量)在特殊情況下是會被自己主動提公升為算術型別的!

#include   

using

namespace std;  

void

main(void)  

;  int c=1+b; //

自己主動提公升為算術型別 

cout

<< c }列舉型別 

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。比如,乙個星期內僅僅有七天,一年僅僅有十二個月,乙個班每週有六門課程等等。假設把這些量 說明為整型,字元型或其他型別顯然是不妥當的。為此,c語言提供了一種稱為「列舉」的型別。在「列舉」型別的定義中列舉出全部可能的取值,被說明為該「枚 舉」型別的變數取值不能超過定義的範圍。應該說明的是,列舉型別是一種基本資料型別,而不是一種構造型別,由於它不能再分解為不論什麼基本型別。 

11.10.1 列舉型別的定義和列舉變數的說明 

1. 列舉的定義列舉型別定義的一般形式為: 

enum 

列舉名; 

在列舉值表中應羅列出全部可用值。這些值也稱為列舉元素。 

比如: 

該列舉名為weekday,列舉值共同擁有7個,即一周中的七天。凡被說明為weekday型別變數的取值僅僅能是七天中的某一天。 

2. 列舉變數的說明 

如同結構和聯合一樣,列舉變數也可用不同的方式說明,即先定義後說明,同一時候定義說明或直接說明。 

設有變數a,b,c被說明為上述的weekday,可採用下述任一種方式: 

enum weekday; 

enum weekday a,b,c; 

或者為: 

enum weekdaya,b,c; 

或者為: 

enum a,b,c; 

11.10.2 列舉型別變數的賦值和使用 

列舉型別在使用中有下面規定: 

1. 列舉值是常量,不是變數。不能在程式中用賦值語句再對它賦值。 

比如對列舉weekday的元素再作下面賦值: 

sun=5; 

mon=2; 

sun=mon; 

都是錯誤的。 

2. 列舉元素本身由系統定義了乙個表示序號的數值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。 

【例11.10】 

main() a,b,c; 

a=sun; 

b=mon; 

c=tue; 

printf("%d,%d,%d",a,b,c); 

} 說明: 

僅僅能把列舉值賦予列舉變數,不能把元素的數值直接賦予列舉變數。如: 

a=sum; 

b=mon; 

是正確的。而: 

a=0; 

b=1; 

是錯誤的。如一定要把數值賦予列舉變數,則必須用強制型別轉換。 

如: a=(enum weekday)2; 

其意義是將順序號為2的列舉元素賦予列舉變數a,相當於: 

a=tue; 

還應該說明的是列舉元素不是字元常量也不是字串常量,使用時不要加單、雙引號。 

【例11.11】 

main() month[31],j; 

int i; 

j=a; 

for(i=1;i<=30;i++) 

for(i=1;i<=30;i++) 

} printf("/n"); }

enum 在c中的使用

如果乙個變數你需要幾種可能存在的值,那麼就可以被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也可以說是可能的值一一例舉出來。舉個例子來說明一吧,為了讓大家更明白一點,比如乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就...

enum 在c 中的使用

列舉型別,顧名思義,枚 作為量詞,作 個 講,那麼列舉,就是乙個乙個的列舉,如果一件事情能夠被乙個乙個的列舉,那麼它的數量肯定就是有限的,否則是不能被一一枚舉出來的。所以列舉型別即為能被列舉的常量的乙個集合。在生活中,列舉的例子隨處可見,比如禮拜幾,那麼就可以作為乙個列舉變數。這個變數所儲存的值,是...

enum 在c中的使用 列舉型別)

如果乙個變數你需要幾種可能存在的值,那麼就可以被定義成為列舉型別。之所以叫列舉就是說將變數或者叫物件可能存在的情況也可以說是可能的值一一例舉出來。舉個例子來說明一吧,為了讓大家更明白一點,比如乙個鉛筆盒中有一支筆,但在沒有開啟之前你並不知道它是什麼筆,可能是鉛筆也可能是鋼筆,這裡有兩種可能,那麼你就...