enum是列舉型別。
定義形式一:
enum 列舉型別名
列舉變數1(,列舉變數2,……);
如enum weekday
today;
weekday 為列舉型別名,today為列舉變數,大括號裡面的monday,tuesday等都是列舉常量。其中,monday為0,tuesday為1,wednesday=2,thursday=3,saturday=10,sunday=11.
列舉型別還有另外一種定義形式,即省略型別名。
定義形式二:
enum
列舉變數1(,列舉變數2,……);
如enum
today;
雖然省略了型別名,但c++會自動給該列舉型別取乙個型別名,形如__unamed_0000_1。
注意:1.列舉常量的值不允許再修改。因為它是常量。如monday=4;這是錯的。
2.不能用整數給列舉變數賦值。
如today=0;這是錯的。因為型別不匹配。應該改為:today=(weekday)0;
但如果列舉型別的定義形式為第二種形式,則today=(weekday)0也是錯誤的。原因很簡單。因為weekday未定義。假設此時,c++給該列舉型別取的型別名為__unnamed_0000_1,那麼,today=(__unnamed_0000_1)0;是否正確呢?
答案是否定的。
如果列舉型別定義在另乙個類的定義中,則列舉變數,列舉常量都可以做為該類的成員變數。但是,列舉型別名是類的靜態型別。
#include
using namespace std;
class myclass
public:
enum weekday
monday=0,tuesday=1,wednesday,thursday,friday,saturday,sunday
}first,second;//列舉型別的第一種定義形式,列舉型別名為weekday。
int main()
myclass aclass;
aclass.first=myclass::monday;//列舉常量monday作為類的成員變數
aclass.first=myclass::weekday::moday;//編譯器警告:warning c4482: 使用了非標準擴充套件: 限定//名中使用了列舉「myclass::weekday」。不應該採取這種方法。
aclass.first=(myclass::weekday)0;// 整數賦給列舉變數。但是必須型別轉化。適用於列舉變數的//的第一種定義形式。
除錯環境為windowsxp+vs2008
列舉型別(enum)
enum 是計算機程式語言中的一種資料型別 列舉型別。應用場景 有些變數的取值被要求在乙個確定的範圍內,例如一周有 7天,一年 12個月,或者使用者自定義的今天安排要學習的百家姓有 4個等等。定義 在列舉型別的定義中列舉出所有的可能取值,該變數的取值只能是所列舉的範圍。格式 enum 列舉名 enu...
enum列舉型別。
列舉 定義常量符號,就是巨集定義常數的集合體 比如 四季,星期,意義相關的常數 狀態機 1 根據當前狀態,這個週期結束,就成了下乙個狀態。2 根據你的當前狀態,還和你的輸入有關。比如 fpga,gui 通過列舉,可以將一些常量賦值給某些固定的字串常量。可以通過改變列舉型別的狀態來達到自己的一些目的。...
enum列舉型別
public enum mm aa,bb,cc,dd enum列舉定義好之後,經過編譯後,會變成乙個類,類裡面包含了所有的列舉常量,對於每個列舉常量,主要包含了2個內容 name 和 ordinal,name就是名字,比如上面的 aa,bb 這些就是名字,ordinal 是 int 型別,儲存的是位...