c語(yǔ)言中enum類(lèi)型的用法案例講解
11.10 枚舉類(lèi)型
在實(shí)際問(wèn)題中,有些變量的取值被限定在一個(gè)有限的范圍內(nèi)。例如,一個(gè)星期內(nèi)只有七天,一年只有十二個(gè)月,一個(gè)班每周有六門(mén)課程等等。如果把這些量說(shuō)明為整型,字符型或其它類(lèi)型顯然是不妥當(dāng)?shù)?。為此,C語(yǔ)言提供了一種稱(chēng)為“枚舉”的類(lèi)型。在“枚舉”類(lèi)型的定義中列舉出所有可能的取值,被說(shuō)明為該“枚舉”類(lèi)型的變量取值不能超過(guò)定義的范圍。
應(yīng)該說(shuō)明的是,枚舉類(lèi)型是一種基本數(shù)據(jù)類(lèi)型,而不是一種構(gòu)造類(lèi)型,因?yàn)樗荒茉俜纸鉃槿魏位绢?lèi)型。
11.10.1 枚舉類(lèi)型的定義和枚舉變量的說(shuō)明
1. 枚舉的定義
枚舉類(lèi)型定義的一般形式為:
enum 枚舉名{ 枚舉值表 };
在枚舉值表中應(yīng)羅列出所有可用值。這些值也稱(chēng)為枚舉元素。
例如:
該枚舉名為weekday,枚舉值共有7個(gè),即一周中的七天。凡被說(shuō)明為weekday類(lèi)型變量的取值只能是七天中的某一天。
2. 枚舉變量的說(shuō)明
如同結(jié)構(gòu)和聯(lián)合一樣,枚舉變量也可用不同的方式說(shuō)明,即先定義后說(shuō)明,同時(shí)定義說(shuō)明或直接說(shuō)明。
設(shè)有變量a,b,c被說(shuō)明為上述的weekday,可采用下述任一種方式:
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;
或者為: enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者為: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
11.10.2 枚舉類(lèi)型變量的賦值和使用
枚舉類(lèi)型在使用中有以下規(guī)定:
1. 枚舉值是常量,不是變量。不能在程序中用賦值語(yǔ)句再對(duì)它賦值。 例如對(duì)枚舉weekday的元素再作以下賦值: sun=5; mon=2; sun=mon; 都是錯(cuò)誤的。
2. 枚舉元素本身由系統(tǒng)定義了一個(gè)表示序號(hào)的數(shù)值,從0開(kāi)始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。
【例11.10】
main(){ enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf("%d,%d,%d",a,b,c); }
說(shuō)明: 只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:
a=sum;
b=mon;
是正確的。而:
a=0;
b=1;
是錯(cuò)誤的。如一定要把數(shù)值賦予枚舉變量,則必須用強(qiáng)制類(lèi)型轉(zhuǎn)換。 如:
a=(enum weekday)2;
其意義是將順序號(hào)為2的枚舉元素賦予枚舉變量a,相當(dāng)于:
a=tue; 還應(yīng)該說(shuō)明的是枚舉元素不是字符常量也不是字符串常量,使用時(shí)不要加單、雙引號(hào)。
【例11.11】
main(){ enum body { a,b,c,d } month[31],j; int i; j=a; for(i=1;i<=30;i++){ month[i]=j; j++; if (j>d) j=a; } for(i=1;i<=30;i++){ switch(month[i]) { case a:printf(" %2d %c\t",i,'a'); break; case b:printf(" %2d %c\t",i,'b'); break; case c:printf(" %2d %c\t",i,'c'); break; case d:printf(" %2d %c\t",i,'d'); break; default:break; } } printf("\n"); }
到此這篇關(guān)于c語(yǔ)言中enum類(lèi)型的用法案例講解的文章就介紹到這了,更多相關(guān)C語(yǔ)言中enum類(lèi)型用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C語(yǔ)言數(shù)據(jù)類(lèi)型枚舉enum全面詳解示例教程
- c語(yǔ)言枚舉類(lèi)型enum的用法及應(yīng)用實(shí)例
- C語(yǔ)言數(shù)據(jù)類(lèi)型與sizeof關(guān)鍵字
- C語(yǔ)言中sizeof函數(shù)踩過(guò)的坑總結(jié)
- C語(yǔ)言 sizeof 函數(shù)詳情
- C語(yǔ)言入門(mén)學(xué)習(xí)筆記之typedef簡(jiǎn)介
- C語(yǔ)言入門(mén)篇--注釋,關(guān)鍵字typedef及轉(zhuǎn)義字符詳解
- C語(yǔ)言中typedef的用法以及#define區(qū)別詳解
- C語(yǔ)言詳細(xì)分析講解關(guān)鍵字enum與sizeof及typedef的用法
相關(guān)文章
C++ vector擴(kuò)容解析noexcept應(yīng)用場(chǎng)景
這篇文章主要介紹了C++ vector擴(kuò)容解析noexcept應(yīng)用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09詳解應(yīng)用程序與驅(qū)動(dòng)程序通信DeviceIoControl
這種通信方式,就是驅(qū)動(dòng)程序和應(yīng)用程序自定義一種IO控制碼,然后調(diào)用DeviceIoControl函數(shù),IO管理器會(huì)產(chǎn)生一個(gè)MajorFunction為IRP_MJ_DEVICE_CONTROL,MinorFunction為自己定義的控制碼的IRP,系統(tǒng)就調(diào)用相應(yīng)的處理IRP_MJ_DEVICE_CONTROL的派遣函數(shù)2021-06-06C++小知識(shí):不要節(jié)約代碼行數(shù)
今天小編就為大家分享一篇關(guān)于C++小知識(shí):不要節(jié)約代碼行數(shù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Qt5 串口類(lèi)QSerialPort的實(shí)現(xiàn)
在Qt5以上提供了QtSerialPort模塊,方便編程人員快速的開(kāi)發(fā)應(yīng)用串口的應(yīng)用程序。本文主要介紹了Qt5 串口類(lèi)QSerialPort的實(shí)現(xiàn),,感興趣的可以了解一下2022-05-05C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的掃雷游戲
掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開(kāi)算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來(lái)詳解每一步分析2021-10-10簡(jiǎn)述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制
這篇文章主要介紹了簡(jiǎn)述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下2020-08-08C++內(nèi)核對(duì)象封裝單實(shí)例啟動(dòng)程序的類(lèi)
這篇文章主要介紹了利用C++內(nèi)核對(duì)象封裝的類(lèi),程序只能運(yùn)行單個(gè)實(shí)例,可防止多次啟動(dòng),大家參考使用吧2013-11-11