




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、在程序中,可能需要為某些整數(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
2、在此,我們定義一種新的數(shù)據(jù)類型,希望它能完成同樣的工作。這種新的數(shù)據(jù)類型叫枚舉型。1. 定義一種新的數(shù)據(jù)類型 - 枚舉型 以下代碼定義了這種新的數(shù)據(jù)類型 - 枚舉型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;(1) 枚舉型是一個(gè)集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號(hào),隔開(kāi)。(2) DAY是一個(gè)標(biāo)識(shí)符,可以
3、看成這個(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);結(jié)束。 2. 使用枚舉類型對(duì)變量進(jìn)行聲明新的數(shù)據(jù)類型定義完成后,它就可以使用了。我們已經(jīng)見(jiàn)過(guò)最基本的數(shù)據(jù)類型,如:整型int, 單精度浮點(diǎn)型float, 雙精度浮點(diǎn)型double, 字符型char, 短整型short等等。用這些基本數(shù)據(jù)
4、類型聲明變量通常是這樣:char a; /變量a的類型均為字符型charchar letter;int x, y, z;
5、 /變量x,y和z的類型均為整型intint number;double m, n;double result; /變量result的類型為雙精度浮點(diǎn)型double 既然枚舉也是一種數(shù)據(jù)類型,那么它和基本數(shù)據(jù)類型一樣也可以對(duì)變量進(jìn)行聲明。方法一:枚舉類型的定義和變量的聲明分開(kāi)enum DAY MON=1, TUE, WED,
6、0;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)
7、DAY省略,這是允許的。 saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /變量workday的類型為枚舉型enum DAY
8、 enum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /變量days的類型為枚舉型enum week enum BOOLEAN false, true end_flag, match_flag; /定義枚舉類型并聲明了兩個(gè)枚舉型變量 方法三:用typedef關(guān)鍵字將枚舉類型定義成別名,并利用該別名進(jìn)行變量聲明:t
9、ypedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /此處的workday為枚
10、舉型enum workday的別名 workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,即enum workday 也可以:typedef enum saturday, sunday = 0, monday, tuesday,
11、160; wednesday, thursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,即enum workday 也可以用這種方式:typedef enum workday sat
12、urday, sunday = 0, monday, tuesday, wednesday, thursday, friday;workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,即enum workd
13、ay 注意:同一個(gè)程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯(cuò)誤示例如下所示:錯(cuò)誤聲明一:存在同名的枚舉類型typedef enum wednesday, thursday, friday workday;typedef enum WEEK saturday, sunday =&
14、#160;0, monday, workday; 錯(cuò)誤聲明二:存在同名的枚舉成員typedef enum wednesday, thursday, friday workday_1;typedef enum WEEK wednesday, sunday
15、= 0, monday, workday_2; 3. 使用枚舉類型的變量3.1 對(duì)枚舉型的變量賦值。實(shí)例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進(jìn)行了對(duì)比:方法一:先聲明變量,再對(duì)變量賦值#include<</SPAN>stdio.h>enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN void main()
16、 int x, y, z; x = 10; y = 20; z = 30; enum DA
17、Y yesterday, today, tomorrow; yesterday = MON; today = TUE; tomorrow = WED; printf("%d %d %d
18、160;n", yesterday, today, tomorrow); 方法二:聲明變量的同時(shí)賦初值#include <</SPAN>stdio.h>enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN void main() int x=10, y=
19、20, z=30; enum DAY yesterday = MON, today = TUE,
20、60; tomorrow = WED; printf("%d %d %d n", yesterday, today, tomorrow); 方法三:定義類型的同時(shí)聲明變量,然后對(duì)變量賦值。#include <</SPAN>stdio.h&
21、gt;enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;int x, y, z;void main() x = 10; y = 20; z =&
22、#160;30; yesterday = MON; today = TUE; tomorrow = WED; printf("%d %d %d n",
23、 x, y, z); /輸出:10 20 30 printf("%d %d %d n", yesterday, today, tomorrow); /輸出:1 2 3 方法四:類型定義,變量聲明,賦初值同時(shí)進(jìn)行。#include <</SPAN>stdio.h>enum DAY MO
24、N=1, TUE, WED, THU, FRI, SAT, SUN yesterday = MON, today = TUE, tomorrow = WED;int x = 10,
25、y = 20, z = 30;void main() printf("%d %d %d n", x, y, z); /輸出:10 20 30 printf("%d %d %d n", yesterday, today, tomorrow); /輸出
26、:1 2 3 3.2 對(duì)枚舉型的變量賦整數(shù)值時(shí),需要進(jìn)行類型轉(zhuǎn)換。#include <</SPAN>stdio.h>enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN void main() enum DAY yesterday, today, tomorrow; &
27、#160; yesterday = TUE; today = (enum DAY) (yesterday + 1); /類型轉(zhuǎn)換 tomorrow = (enum DAY) 30; /類型轉(zhuǎn)換 /tomorrow = 3; /錯(cuò)誤 pr
28、intf("%d %d %d n", yesterday, today, tomorrow); /輸出:2 3 30 3.3 使用枚舉型變量#include<</SPAN>stdio.h>enum BELL = 'a',
29、 BACKSPACE = 'b', HTAB = 't', RETURN = 'r', NEWLINE = 'n
30、', VTAB = 'v', SPACE = ' 'enum BOOLEAN FALSE = 0, TRUE match_flag;void m
31、ain() int index = 0; int count_of_letter = 0; int count_of_space = 0; char str = "I'm Ely efod" match
32、_flag = FALSE; for(; strindex != '0' index+) if( SPACE != strindex ) count_of_letter+;
33、60; else match_flag = (enum BOOLEAN) 1; count_of_space+;
34、; printf("%s %d times %c", match_flag ? "match" : "not match", count_of_space, NEWLINE); printf("c
35、ount of letters: %d %c%c", count_of_letter, NEWLINE, RETURN); 輸出:match 2 timescount of letters: 10Press any key to continue 4. 枚舉類型與sizeof運(yùn)算符#include<</SPAN>stdio.h>enum escapes BELL
36、; = 'a', BACKSPACE = 'b', HTAB = 't', RETURN = 'r', NEWLINE
37、;= 'n', VTAB = 'v', SPACE = ' 'enum BOOLEAN FALSE = 0, TRUE match_flag;void main()
38、; printf("%d bytes n", sizeof(enum escapes); /4 bytes printf("%d bytes n", sizeof(escapes); /4 bytes printf("%d bytes n", sizeof(enum BOOL
39、EAN); /4 bytes printf("%d bytes n", sizeof(BOOLEAN); /4 bytes printf("%d bytes n", sizeof(match_flag); /4 bytes printf("%d bytes n"
40、, sizeof(SPACE); /4 bytes printf("%d bytes n", sizeof(NEWLINE); /4 bytes printf("%d bytes n", sizeof(FALSE); /4 bytes printf("%d bytes
41、160;n", sizeof(0); /4 bytes5. 綜合舉例#include<</SPAN>stdio.h>enum Season /注意這里如果放在下面,后面就不能直接那樣聲明 spring, summer=100, fall=96, winter;typedef
42、;enum Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, SundayWeekday;void main() printf("%d n", spring); / 0 printf("%d, %c n", summer, summer); / 100, d printf("%d&
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人生軌跡報(bào)告范文
- 潛水事故報(bào)告范文
- 2025年度金融科技合伙原始股購(gòu)買協(xié)議書(shū)
- 二零二五年度父母子女購(gòu)房資金分期還款協(xié)議
- MySQL教程(新體系-綜合應(yīng)用實(shí)例視頻)(第4版)習(xí)題及答案 第06章
- 二零二五年度發(fā)廊老板員工勞動(dòng)權(quán)益保障合同
- 2025年度知識(shí)產(chǎn)權(quán)法律事務(wù)顧問(wèn)合同
- 浙江國(guó)企招聘2024寧波市名山建設(shè)發(fā)展集團(tuán)有限公司招聘4人筆試參考題庫(kù)附帶答案詳解
- 二零二五年度房屋買賣定金協(xié)議附房產(chǎn)交易稅費(fèi)承擔(dān)協(xié)議
- 二零二五年度培訓(xùn)機(jī)構(gòu)教學(xué)質(zhì)量保密合同
- 《上腔靜脈綜合征》課件
- 【正版授權(quán)】 ISO 24089:2023/Amd 1:2024 EN Road vehicles - Software update engineering - Amendment 1
- 2024年夫妻雙方自愿離婚協(xié)議書(shū)樣本
- 湖南湘和永晟公司存貨管理及核算的優(yōu)化設(shè)計(jì)
- 活在課堂里 課件
- SZSD01 0012-2024智能交通大數(shù)據(jù)底座數(shù)據(jù)采集規(guī)范
- 經(jīng)典廣告歌曲大全(109首)
- 環(huán)保儀器培訓(xùn)
- 2024年全國(guó)職業(yè)院校技能大賽中職(大數(shù)據(jù)應(yīng)用與服務(wù)賽項(xiàng))考試題庫(kù)(含答案)
- 2024湖南省水利廳直屬事業(yè)單位招聘擬聘用人員歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 《計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)》課程教案(完整版)
評(píng)論
0/150
提交評(píng)論