亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦>學(xué)習(xí)英語>專業(yè)英語>計算機英語>

      c語言枚舉的用法

      時間: 長思709 分享
        在程序中,可能需要為某些整數(shù)定義一個別名,我們可以利用預(yù)處理指令#define來完成這項工作,您的代碼可能是:
        #defineMON1
        #defineTUE 2
        #defineWED3
        #defineTHU 4
        #defineFRI 5
        #defineSAT 6
        #defineSUN 7
        在此,我們定義一種新的數(shù)據(jù)類型,希望它能完成同樣的工作。這種新的數(shù)據(jù)類型叫枚舉型。下面小編就為大家介紹下c語言枚舉的用法。
              c語言枚舉的用法如下:
        1. 定義一種新的數(shù)據(jù)類型 - 枚舉型
        以下代碼定義了這種新的數(shù)據(jù)類型 - 枚舉型
        enumDAY
        {
        MON=1,TUE,WED,THU,FRI,SAT,SUN
        };
        (1) 枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號,隔開。
        (2) DAY是一個標識符,可以看成這個集合的名字,是一個可選項,即是可有可無的項。
        (3) 第一個枚舉成員的默認值為整型的0,后續(xù)枚舉成員的值在前一個成員上加1。
        (4) 可以人為設(shè)定枚舉成員的值,從而自定義某個范圍內(nèi)的整數(shù)。
        (5) 枚舉型是預(yù)處理指令#define的替代。
        (6) 類型定義以分號;結(jié)束。
        2. 使用枚舉類型對變量進行聲明
        新的數(shù)據(jù)類型定義完成后,它就可以使用了。我們已經(jīng)見過最基本的數(shù)據(jù)類型,如:整型int, 單精度浮點型float, 雙精度浮點型double, 字符型char, 短整型short等等。用這些基本數(shù)據(jù)類型聲明變量通常是這樣:
        char a;//變量a的類型均為字符型char
        char letter;
        int x,
        y,
        z;//變量x,y和z的類型均為整型int
        int number;
        double m,n;
        double result;//變量result的類型為雙精度浮點型double
        既然枚舉也是一種數(shù)據(jù)類型,那么它和基本數(shù)據(jù)類型一樣也可以對變量進行聲明。
        方法一:枚舉類型的定義和變量的聲明分開
        enumDAY
        {
        MON=1,TUE,WED,THU,FRI,SAT,SUN
        };
        enumDAYyesterday;
        enumDAYtoday;
        enumDAYtomorrow;//變量tomorrow的類型為枚舉型enumDAY
        enumDAYgood_day,bad_day;//變量good_day和bad_day的類型均為枚舉型enumDAY
        方法二:類型定義與變量聲明同時進行:
        enum//跟第一個定義不同的是,此處的標號DAY省略,這是允許的。
        {
        saturday,
        sunday=0,
        monday,
        tuesday,
        wednesday,
        thursday,
        friday
        }workday;//變量workday的類型為枚舉型enumDAY
        enumweek{Mon=1,Tue,Wed,Thu,FriSat,Sun}days;//變量days的類型為枚舉型enumweek
        enumBOOLEAN{false,true}end_flag,match_flag;//定義枚舉類型并聲明了兩個枚舉型變量
        方法三:用typedef關(guān)鍵字將枚舉類型定義成別名,并利用該別名進行變量聲明:
        typedefenumworkday
        {
        saturday,
        sunday=0,
        monday,
        tuesday,
        wednesday,
        thursday,
        friday
        }workday;//此處的workday為枚舉型enumworkday的別名
        workdaytoday,tomorrow;//變量today和tomorrow的類型為枚舉型workday,也即enumworkday
        enum workday中的workday可以省略:
        typedefenum
        {
        saturday,
        sunday=0,
        monday,
        tuesday,
        wednesday,
        thursday,
        friday
        }workday;//此處的workday為枚舉型enumworkday的別名
        workdaytoday,tomorrow;//變量today和tomorrow的類型為枚舉型workday,也即enumworkday
        也可以用這種方式:
        typedefenumworkday
        {
        saturday,
        sunday=0,
        monday,
        tuesday,
        wednesday,
        thursday,
        friday
        };
        workdaytoday,tomorrow;//變量today和tomorrow的類型為枚舉型workday,也即enumworkday
        注意:同一個程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯誤示例如下所示:
        錯誤聲明一:存在同名的枚舉類型
        typedefenum
        {
        wednesday,
        thursday,
        friday
        }workday;
        typedefenumWEEK
        {
        saturday,
        sunday=0,
        monday,
        }workday;
        錯誤聲明二:存在同名的枚舉成員
        typedefenum
        {
        wednesday,
        thursday,
        friday
        }workday_1;
        typedefenumWEEK
        {
        wednesday,
        sunday=0,
        monday,
        }workday_2;
        3. 使用枚舉類型的變量
        3.1 對枚舉型的變量賦值。
        實例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進行了對比:
        方法一:先聲明變量,再對變量賦值
        #include<stdio.h>
        /*定義枚舉類型*/
        enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
        voidmain()
        {
        /*使用基本數(shù)據(jù)類型聲明變量,然后對變量賦值*/
        intx,y,z;
        x=10;
        y=20;
        z=30;
        /*使用枚舉類型聲明變量,再對枚舉型變量賦值*/
        enumDAYyesterday,today,tomorrow;
        yesterday=MON;
        today=TUE;
        tomorrow=WED;
        printf("%d%d%d\n",yesterday,today,tomorrow);
        }
        方法二:聲明變量的同時賦初值
        #include <stdio.h>
        /*定義枚舉類型*/
        enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
        voidmain()
        {
        /*使用基本數(shù)據(jù)類型聲明變量同時對變量賦初值*/
        intx=10,y=20,z=30;
        /*使用枚舉類型聲明變量同時對枚舉型變量賦初值*/
        enumDAYyesterday=MON,
        today=TUE,
        tomorrow=WED;
        printf("%d%d%d\n",yesterday,today,tomorrow);
        }
        方法三:定義類型的同時聲明變量,然后對變量賦值。
        #include<stdio.h>
        /*定義枚舉類型,同時聲明該類型的三個變量,它們都為全局變量*/
        enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}yesterday,today,tomorrow;
        /*定義三個具有基本數(shù)據(jù)類型的變量,它們都為全局變量*/
        intx,y,z;
        voidmain()
        {
        /*對基本數(shù)據(jù)類型的變量賦值*/
        x=10;y=20;z=30;
        /*對枚舉型的變量賦值*/
        yesterday=MON;
        today=TUE;
        tomorrow=WED;
        printf("%d%d%d\n",x,y,z);//輸出:102030
        printf("%d%d%d\n",yesterday,today,tomorrow);//輸出:123
        }
        方法四:類型定義,變量聲明,賦初值同時進行。
        #include<stdio.h>
        /*定義枚舉類型,同時聲明該類型的三個變量,并賦初值。它們都為全局變量*/
        enumDAY
        {
        MON=1,
        TUE,
        WED,
        THU,
        FRI,
        SAT,
        SUN
        }
        yesterday=MON,today=TUE,tomorrow=WED;
        /*定義三個具有基本數(shù)據(jù)類型的變量,并賦初值。它們都為全局變量*/
        intx=10,y=20,z=30;
        voidmain()
        {
        printf("%d%d%d\n",x,y,z);//輸出:102030
        printf("%d%d%d\n",yesterday,today,tomorrow);//輸出:123
        }
        3.2 對枚舉型的變量賦整數(shù)值時,需要進行類型轉(zhuǎn)換。
        #include<stdio.h>
        enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
        voidmain()
        {
        enumDAYyesterday,today,tomorrow;
        yesterday=TUE;
        today=(enumDAY)(yesterday+1);//類型轉(zhuǎn)換
        tomorrow=(enumDAY)30;//類型轉(zhuǎn)換
        //tomorrow=3;//錯誤
        printf("%d%d%d\n",yesterday,today,tomorrow);//輸出:2330
        }
        3.3 使用枚舉型變量
        #include<stdio.h>
        enum
        {
        BELL='\a',
        BACKSPACE='\b',
        HTAB ='\t',
        RETURN ='\r',
        NEWLINE ='\n',
        VTAB ='\v',
        SPACE =''
        };
        enumBOOLEAN{FALSE=0,TRUE}match_flag;
        voidmain()
        {
        intindex=0;
        intcount_of_letter=0;
        intcount_of_space=0;
        charstr[]="I'mElyefod";
        match_flag=FALSE;
        for(;str[index]!='\0';index++)
        if(SPACE!=str[index])
        count_of_letter++;
        else
        {
        match_flag=(enumBOOLEAN)1;
        count_of_space++;
        }
        printf("%s%dtimes%c",match_flag"match":"notmatch",count_of_space,NEWLINE);
        printf("countofletters:%d%c%c",count_of_letter,NEWLINE,RETURN);
        }
        輸出:
        match 2 times
        count of letters: 10
        Press any key to continue
        4.枚舉類型與sizeof運算符
        #include <stdio.h>
        enumescapes
        {
        BELL='\a',
        BACKSPACE='\b',
        HTAB='\t',
        RETURN='\r',
        NEWLINE='\n',
        VTAB='\v',
        SPACE=''
        };
        enumBOOLEAN{FALSE=0,TRUE}match_flag;
        voidmain()
        {
        printf("%dbytes\n",sizeof(enumescapes));//4bytes
        printf("%dbytes\n",sizeof(escapes));//4bytes
        printf("%dbytes\n",sizeof(enumBOOLEAN));//4bytes
        printf("%dbytes\n",sizeof(BOOLEAN));//4bytes
        printf("%dbytes\n",sizeof(match_flag));//4bytes
        printf("%dbytes\n",sizeof(SPACE));//4bytes
        printf("%dbytes\n",sizeof(NEWLINE));//4bytes
        printf("%dbytes\n",sizeof(FALSE));//4bytes
        printf("%dbytes\n",sizeof(0));//4bytes
        }
        5.綜合舉例
        #include<stdio.h>
        enumSeason
        {
        spring,summer=100,fall=96,winter
        };
        typedefenum
        {
        Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
        }
        Weekday;
        voidmain()
        {
        /*Season*/
        printf("%d\n",spring);//0
        printf("%d,%c\n",summer,summer);//100,d
        printf("%d\n",fall+winter);//193
        SeasonmySeason=winter;
        if(winter==mySeason)
        printf("mySeasoniswinter\n");//mySeasoniswinter
        intx=100;
        if(x==summer)
        printf("xisequaltosummer\n");//xisequaltosummer
        printf("%dbytes\n",sizeof(spring));//4bytes
        /*Weekday*/
        printf("sizeofWeekdayis:%d\n",sizeof(Weekday));//sizeofWeekdayis:4
        Weekdaytoday=Saturday;
        Weekdaytomorrow;
        if(today==Monday)
        tomorrow=Tuesday;
        else
        tomorrow=(Weekday)(today+1);//remembertoconvertfrominttoWeekday
        }
      515228