C语言关键字浅析-enum
### C語言關鍵字淺析系列 ###
### ISO/ANSI C 關鍵字 ###
enum關鍵字的原型是enumerated type,意思是枚舉類型
這是ISO/ANSI C90標準新增的關鍵字之一(const、enum、signed、void、volatile)
?
enum的作用是:
聲明代表整數常量的符號名稱。
?
1、枚舉是什么意思
枚舉有列舉的意思,本意是一個一個列舉出來,更準確一點應該是列出有窮序列集的所有成員
生活中的枚舉例子很多,如一年的十二個月:January,February,……,November,December
一周7天:Monday,Tuesday,……,Sunday
簡化的七彩彩虹顏色:紅,橙,黃,綠,藍,靛,紫
?
2、枚舉類型(enumeration type)
枚舉類型的一個作用是提高程序的可讀性,從語法上看,如果你已經學過了C語言中的“結構(struct)”的概念
你會發現他們的語法格式是差不多的:
struct student{ /* 這是一個結構 */char[30] name;int age; };enum Taiji{ /* 這是一個枚舉 */Ying,Yang };struct student stu; /* 定義結構的變量 */ enum Taiji tj; /* 定義枚舉的變量 */如何使用枚舉類型的變量呢?
enum monthes{January,February,Match,April,May,June,July,August,September,October,November,December }; enum monthes mon;/* 某個函數 */ void fun() {mon = February; /* 可以在其取值范圍內賦值 */if (mon == August) /* 可以在邏輯表達式中直白地這樣寫 */{// Operation_1}for(mon = February;mon <= September;mon++) /* 可以寫進循環條件判斷 */{// Operation_2}/*注:該式中的mon++表達式,這樣的格式在C中是支持的,但在C++中不允許,即C語言支持對枚舉變量使用自增運算符,而C++不允許,如果程序存在兩種語言的交叉,可以將mon聲明為int類型,即可兼容C/C++*/ }3、枚舉類型的本質和enum常量
技術上看,上述的January等枚舉值并不是以字符形式存儲,而是一個個int類型的整數常量,
如果我們把January按%d輸出,可以看到打印出一個0。
這樣的結構允許枚舉常量用在switch結構中,因為它本質是int。
如果沒有額外規定,枚舉列表的常量會按照默認的數序指定,即從第一個枚舉項開始分別為0,1,2……
當然在定義時我們也可以自己做出一點規定:
enum monthes{ /* 如果我們希望枚舉的月份和表示它的值是一致的 */January = 1,February = 2,Match = 3,April = 4,…… };enum humi{ /* 濕度默認等級 */dry = 10, normal = 45, wet = 80 };如果存在某些枚舉項沒有自定義賦值呢?
enum humi{broken, /* 首個枚舉默認值為0 */veryDry = 9, Dry, littleDry, /* 此時后兩項沒有指定,但系統會從9開始往后繼續指定,即10,11…… */belowNormal = 44, Normal, aboveNormal, /* 同理,此處三項為44,45,46 */littleWet = 79, Wet, veryWet /* 每個自定義的指定值可以看做枚舉指定的“新起點”, 如果沒有指定則自動按序指定 */ };枚舉配合case在switch結構中能很好地提高程序可讀性:
enum weekdays{Mon, Tues, Wed, Thur, Fri, Sat, Sun }; …… void fun() {enum weekdays week;……switch (week){case Mon: printf("It's Monday");case Tues: printf("It's Tuesday");case Wed: printf("It's Wednesday");case Thur: printf("It's Thursday");case Fri: printf("It's Friday");case Sat: printf("It's Saturday");case Sun: printf("It's Sunday");default: printf("What a bug...");}…… }?
——參考《C Primer Plus第五版》
?
相關文章:
C語言關鍵字淺析-struct
?
總結
以上是生活随笔為你收集整理的C语言关键字浅析-enum的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用计算机环境设计,计算机绘图软件在环
- 下一篇: 了解套壳子