enum與typedefenum的用法_第1頁(yè)
enum與typedefenum的用法_第2頁(yè)
enum與typedefenum的用法_第3頁(yè)
enum與typedefenum的用法_第4頁(yè)
enum與typedefenum的用法_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論