




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、A thesis submitted toin partial fulfillment of the requirementfor the degree ofMaster of EngineeringC語(yǔ)言詳解 - 枚舉類型注:以下全部代碼的執(zhí)行環(huán)境為VC+ 6.0在程序中,可能需要為某些整數(shù)定義一個(gè)別名,我們可以利用預(yù)處理指令#define來(lái)完成這項(xiàng)工作,您的代碼可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我們定義一種新的數(shù)據(jù)類型,希望它能完
2、成同樣的工作。這種新的數(shù)據(jù)類型叫枚舉型。1. 定義一種新的數(shù)據(jù)類型 - 枚舉型 以下代碼定義了這種新的數(shù)據(jù)類型 - 枚舉型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;(1) 枚舉型是一個(gè)集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號(hào),隔開。(2) DAY是一個(gè)標(biāo)識(shí)符,可以看成這個(gè)集合的名字,是一個(gè)可選項(xiàng),即是可有可無(wú)的項(xiàng)。(3) 第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。(4) 可以人為設(shè)定枚舉成員的值,從而自定義某個(gè)范圍內(nèi)的整數(shù)。(5) 枚舉型是預(yù)處理指令#define的替代。(6) 類型定義以分號(hào)
3、;結(jié)束。2. 使用枚舉類型對(duì)變量進(jìn)行聲明新的數(shù)據(jù)類型定義完成后,它就可以使用了。我們已經(jīng)見過(guò)最基本的數(shù)據(jù)類型,如:整型int, 單精度浮點(diǎn)型float, 雙精度浮點(diǎn)型double, 字符型char, 短整型short等等。用這些基本數(shù)據(jù)類型聲明變量通常是這樣:char a; /變量a的類型均為字符型charchar letter;int x, y, z; /變量x,y和z的類型均為整型intint number;double m, n;double result; /變量result的類型為雙精度浮點(diǎn)型double既然枚舉也是一種數(shù)據(jù)類型,那么它和基本數(shù)據(jù)類型一樣也可以對(duì)變量進(jìn)行聲明。方法一:
4、枚舉類型的定義和變量的聲明分開enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;enum DAY yesterday;enum DAY today;enum DAY tomorrow; /變量tomorrow的類型為枚舉型enum DAYenum DAY good_day, bad_day; /變量good_day和bad_day的類型均為枚舉型enum DAY方法二:類型定義與變量聲明同時(shí)進(jìn)行:enum /跟第一個(gè)定義不同的是,此處的標(biāo)號(hào)DAY省略,這是允許的。 saturday, sunday = 0, monday, tuesday, wednes
5、day, thursday, friday workday; /變量workday的類型為枚舉型enum DAYenum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /變量days的類型為枚舉型enum weekenum BOOLEAN false, true end_flag, match_flag; /定義枚舉類型并聲明了兩個(gè)枚舉型變量方法三:用typedef關(guān)鍵字將枚舉類型定義成別名,并利用該別名進(jìn)行變量聲明:typedef enum workday saturday, sunday = 0, monday, tuesday, wednes
6、day, thursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workdayenum workday中的workday可以省略:typedef enum saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow
7、; /變量today和tomorrow的類型為枚舉型workday,也即enum workday也可以用這種方式:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday;workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workday注意:同一個(gè)程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯(cuò)誤示例如下所示:錯(cuò)誤聲明一:存在同名的枚舉類型typedef enum wedne
8、sday, thursday, friday workday;typedef enum WEEK saturday, sunday = 0, monday, workday; 錯(cuò)誤聲明二:存在同名的枚舉成員typedef enum wednesday, thursday, friday workday_1;typedef enum WEEK wednesday, sunday = 0, monday, workday_2;3. 使用枚舉類型的變量3.1 對(duì)枚舉型的變量賦值。實(shí)例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進(jìn)行了對(duì)比:方法一:先聲明變量,再對(duì)變量賦值#include/* 定義枚舉類型 *
9、/enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量,然后對(duì)變量賦值 */ int x, y, z; x = 10; y = 20; z = 30; /* 使用枚舉類型聲明變量,再對(duì)枚舉型變量賦值 */ enum DAY yesterday, today, tomorrow; yesterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法二:聲明變量的同時(shí)賦初值#inclu
10、de /* 定義枚舉類型 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量同時(shí)對(duì)變量賦初值 */ int x=10, y=20, z=30; /* 使用枚舉類型聲明變量同時(shí)對(duì)枚舉型變量賦初值 */ enum DAY yesterday = MON, today = TUE, tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法三:定義類型的同時(shí)聲明變量,然后對(duì)變量賦值。#include /* 定義枚舉類型,同時(shí)聲明該
11、類型的三個(gè)變量,它們都為全局變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;/* 定義三個(gè)具有基本數(shù)據(jù)類型的變量,它們都為全局變量 */int x, y, z;void main() /* 對(duì)基本數(shù)據(jù)類型的變量賦值 */ x = 10; y = 20; z = 30; /* 對(duì)枚舉型的變量賦值 */ yesterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, x, y, z); /輸出:10 20 30 printf(%
12、d %d %d n, yesterday, today, tomorrow); /輸出:1 2 3方法四:類型定義,變量聲明,賦初值同時(shí)進(jìn)行。#include /* 定義枚舉類型,同時(shí)聲明該類型的三個(gè)變量,并賦初值。它們都為全局變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday = MON, today = TUE, tomorrow = WED;/* 定義三個(gè)具有基本數(shù)據(jù)類型的變量,并賦初值。它們都為全局變量 */int x = 10, y = 20, z = 30;void main() printf(%d %d %d n
13、, x, y, z); /輸出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:1 2 33.2 對(duì)枚舉型的變量賦整數(shù)值時(shí),需要進(jìn)行類型轉(zhuǎn)換。#include enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() enum DAY yesterday, today, tomorrow; yesterday = TUE; today = (enum DAY) (yesterday + 1); /類型轉(zhuǎn)換 tomorrow = (enum DAY) 30; /類型
14、轉(zhuǎn)換 /tomorrow = 3; /錯(cuò)誤 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:2 3 303.3 使用枚舉型變量#includeenum BELL = a, BACKSPACE = b, HTAB = t, RETURN = r, NEWLINE = n, VTAB = v, SPACE = ;enum BOOLEAN FALSE = 0, TRUE match_flag;void main() int index = 0; int count_of_letter = 0; int count_of_space = 0; c
15、har str = Im Ely efod; match_flag = FALSE; for(; strindex != 0; index+) if( SPACE != strindex ) count_of_letter+; else match_flag = (enum BOOLEAN) 1; count_of_space+; printf(%s %d times %c, match_flag ? match : not match, count_of_space, NEWLINE); printf(count of letters: %d %c%c, count_of_letter, N
16、EWLINE, RETURN);輸出:match 2 timescount of letters: 10Press any key to continue4. 枚舉類型與sizeof運(yùn)算符#include enum escapes BELL = a, BACKSPACE = b, HTAB = t, RETURN = r, NEWLINE = n, VTAB = v, SPACE = ;enum BOOLEAN FALSE = 0, TRUE match_flag;void main() printf(%d bytes n, sizeof(enum escapes); /4 bytes pri
17、ntf(%d bytes n, sizeof(escapes); /4 bytes printf(%d bytes n, sizeof(enum BOOLEAN); /4 bytes printf(%d bytes n, sizeof(BOOLEAN); /4 bytes printf(%d bytes n, sizeof(match_flag); /4 bytes printf(%d bytes n, sizeof(SPACE); /4 bytes printf(%d bytes n, sizeof(NEWLINE); /4 bytes printf(%d bytes n, sizeof(F
18、ALSE); /4 bytes printf(%d bytes n, sizeof(0); /4 bytes5. 綜合舉例#includeenum Season spring, summer=100, fall=96, winter;typedef enum Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, SundayWeekday;void main() /* Season */ printf(%d n, spring); / 0 printf(%d, %c n, summer, summer); / 100, d printf(%d n, fall+winter); / 193 Season mySeason=winter; if(winter=mySeason) printf(mySeason is winter n); / mySeason is winter int x=100; if(x=summer) printf(x is equal to summern); / x is equal to summer printf(%d bytesn, s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 復(fù)變函數(shù)考試題及答案
- 家政禮儀考試題及答案
- 出院考試試題及答案
- 墻體傾覆試題及答案
- 汽輪機(jī)真空試題及答案
- 全國(guó)2009年01月自考《教育學(xué)原理00469》試題及答案
- 2025年平安深圳保安考試題庫(kù)
- 2025年柳州協(xié)警考試題庫(kù)答案
- 2025年b本第四科考試題及答案
- 2025年水災(zāi)害考試題庫(kù)
- 第一單元大單元教學(xué)課件-統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 終止妊娠申請(qǐng)表
- 2023年江蘇省成考專升本英語(yǔ)自考試卷(含答案)
- 各類型玻璃幕墻圖解
- 2022年會(huì)寧縣教師進(jìn)城考試筆試題庫(kù)及答案解析
- 地面地磚施工方案
- “三重一大”三張表格
- 課題申報(bào)講座課件
- 煙花爆竹倉(cāng)庫(kù)建設(shè)項(xiàng)目可行性研究報(bào)告
- 艾滋病防治知識(shí)考試題庫(kù)與答案
- 信用修復(fù)申請(qǐng)書
評(píng)論
0/150
提交評(píng)論