c 中的enum列舉型別

2022-08-29 18:21:10 字數 1437 閱讀 8053

**:

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

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

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 列舉型別enum

關鍵字enum用於宣告列舉,列舉是一種值型別,由許多名字的常量 也叫列舉表 組成。例如 const int monday 0 const int tuesday 1 const sunday 7 可以用c 提供的列舉型別 enum week 列舉中每乙個常量都對應著乙個數值,如果不特別設定,列舉從0...

c 列舉 enum 型別

c 列舉 enum 型別 is2120 csdn 1.最平常的方法 public enum suits public void printallsuits z 2012 2 16 17 49 28 pm is2120 csdn 2.擴充套件方法 更通用,更方便一些 public static cla...

C列舉型別enum

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內有七天,一年有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不能超過...