RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言中枚舉精講分析

嵌入式應(yīng)用開(kāi)發(fā) ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-03-02 10:58 ? 次閱讀

在使用帶有數(shù)字性質(zhì)的名稱時(shí)有的時(shí)候需要用到枚舉的方式進(jìn)行定義函數(shù)名字,按照對(duì)應(yīng)的數(shù)字格式來(lái)對(duì)應(yīng)相應(yīng)的名稱。枚舉成員的值是常量不是變量。
我們首先講解一下枚舉與結(jié)構(gòu)體的區(qū)分,結(jié)構(gòu)體是不同數(shù)據(jù)整合到一起形成的數(shù)據(jù)團(tuán),需要哪個(gè)結(jié)構(gòu)體中的成員按照結(jié)構(gòu)體成員的調(diào)用的方式即可。在枚舉中,枚舉中的成員都是按照從0,1,2...往下排的。
假如我們想告訴用戶今天是星期幾,可能按照正常的定義方式#define week num一個(gè)一個(gè)去定義,然后利用switch語(yǔ)句去查詢的方式實(shí)現(xiàn)代碼如下:

poYBAGId5zWAM5VuAABvCUVJRFA974.png

利用宏定義方式實(shí)現(xiàn)星期查詢

大家可以自己運(yùn)行代碼嘗試一下,這里結(jié)果不做展示。
這種方式實(shí)現(xiàn)查詢是沒(méi)有問(wèn)題的,但是過(guò)多的宏名定義占用資源而且讓代碼看起來(lái)非常冗余。C語(yǔ)言提供了一種枚舉(Enum)類型,能夠列出所有可能的取值,并給它們?nèi)∫粋€(gè)名字。
枚舉類型的定義
按照C語(yǔ)言的要求可以進(jìn)行如下定義
enum typeName { valueName1, valueName2, valueName3, ...... };
enum是一個(gè)新的關(guān)鍵字,專門用來(lái)定義枚舉類型;
typeName是枚舉類型的名字;
valueName1, valueName2, valueName3, ......是每個(gè)值對(duì)應(yīng)的名字的列表。
注意最后的;不能少。

還是按照之前的要求我們?nèi)ゲ樵兛蛻舻男瞧诳梢越⑷缦碌拿杜e:
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
這里我們僅僅給出了名字,卻沒(méi)有給出名字對(duì)應(yīng)的值,這是因?yàn)槊杜e值默認(rèn)從 0 開(kāi)始,往后逐個(gè)加 1(遞增);也就是說(shuō),week 中的 Mon、Tues ...... Sun 對(duì)應(yīng)的值分別為 0、1 ...... 6。
枚舉數(shù)據(jù)的初始化
枚舉數(shù)據(jù)初始化的幾種方式
1.當(dāng)我們按照常規(guī)的定義時(shí),軟件默認(rèn)的枚舉成員從0開(kāi)始計(jì)數(shù)依次增加1;
2.在定義名稱時(shí)對(duì)成員進(jìn)行賦值(注意:這里賦值可以為負(fù)數(shù),枚舉取值類型:byte、sbyte、short、ushort、int、uint、long 或 ulong)實(shí)例代碼如下:
enum process{ pro1 = -5, pro2 = -3,pro3 = -1,pro4 = 5 };
3.如果我們需要建立的枚舉成員值是從某個(gè)數(shù)依次增加1,那只需要給第一個(gè)成員賦值即可,后面的成員值依次加一,示例代碼如下:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
4.枚舉是一種類型,通過(guò)它可以定義枚舉變量,在定義枚舉類型的同時(shí)定義變量:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;
有了枚舉變量,就可以把列表中的值賦給它:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
enum week a = Mon, b = Wed, c = Sat;
或者:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a = Mon, b = Wed, c = Sat;

#include 
int main(){
   enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;
   scanf("%d", &day);
   switch(day){
       case Mon: puts("Monday"); break;
       case Tues: puts("Tuesday"); break;
       case Wed: puts("Wednesday"); break;
       case Thurs: puts("Thursday"); break;
       case Fri: puts("Friday"); break;
       case Sat: puts("Saturday"); break;
       case Sun: puts("Sunday"); break;
       default: puts("Error!");
   }
   return 0;
}


使用說(shuō)明
1) 枚舉列表中的 Mon、Tues、Wed 這些標(biāo)識(shí)符的作用范圍是全局的,不能再定義與它們名字相同的變量。
2) 枚舉中的成員都被替換成了對(duì)應(yīng)的數(shù)字,它們不占用數(shù)據(jù)區(qū)(常量區(qū)、全局?jǐn)?shù)據(jù)區(qū)、棧區(qū)和堆區(qū))的內(nèi)存,而是直接被編譯到命令里面,放到代碼區(qū),所以不能用&取得它們的地址,這就是枚舉的本質(zhì)。

使用枚舉完成實(shí)現(xiàn)星期幾的查詢代碼如下:
#include 
int main(){
   enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;
   scanf("%d", &day);
   switch(day){
       case 1: puts("Monday"); break;
       case 2: puts("Tuesday"); break;
       case 3: puts("Wednesday"); break;
       case 4: puts("Thursday"); break;
       case 5: puts("Friday"); break;
       case 6: puts("Saturday"); break;
       case 7: puts("Sunday"); break;
       default: puts("Error!");
   }
   return 0;
}

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304805
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136686
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中枚舉的基本概念和常見(jiàn)用法

    C語(yǔ)言中,枚舉是一種方便組織和表示一組相關(guān)常量的工具。枚舉類型有助于提高代碼的可讀性和可維護(hù)性。本文將介紹C
    發(fā)表于 08-17 15:32 ?1448次閱讀

    詳細(xì)講解c語(yǔ)言enum枚舉類型

    詳細(xì)講解C語(yǔ)言enum枚舉類型在實(shí)際應(yīng)用中,有的變量只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語(yǔ)言中對(duì)這樣
    發(fā)表于 12-21 23:22

    C語(yǔ)言0基礎(chǔ)入門視頻教程分享

    今天在這里分享給0基礎(chǔ)入門朋友們一個(gè)C語(yǔ)言視頻教程,視頻主要從C語(yǔ)言基礎(chǔ)部分開(kāi)始講解,可以很
    發(fā)表于 05-09 15:58

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例part03

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(第二版),part03。
    發(fā)表于 05-20 14:28 ?30次下載

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(第二版)part05

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(第二版),part05
    發(fā)表于 05-20 14:28 ?0次下載

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(第二版)part06

    51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(第二版),part06
    發(fā)表于 05-20 14:28 ?0次下載

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例一書中的程序

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例一書中的程序
    發(fā)表于 05-25 10:51 ?62次下載

    枚舉C語(yǔ)言中的一種基本數(shù)據(jù)類型

    C語(yǔ)言中,枚舉類型是被當(dāng)做 int 或者 unsigned int 類型來(lái)處理的,所以按照 C 語(yǔ)言規(guī)范是沒(méi)有辦法遍歷
    的頭像 發(fā)表于 09-25 15:45 ?8653次閱讀
    <b class='flag-5'>枚舉</b>是<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>的一種基本數(shù)據(jù)類型

    51單片機(jī)C語(yǔ)言應(yīng)用程序?qū)嵗?b class='flag-5'>精的代碼合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)C語(yǔ)言應(yīng)用程序?qū)嵗?b class='flag-5'>精的代碼合集免費(fèi)下載。
    發(fā)表于 01-15 16:15 ?214次下載
    51單片機(jī)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>應(yīng)用程序?qū)嵗?b class='flag-5'>精</b><b class='flag-5'>講</b>的代碼合集免費(fèi)下載

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例(秦龍)

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例
    發(fā)表于 06-21 15:53 ?8次下載

    go語(yǔ)言枚舉類型怎么用

    go 語(yǔ)言枚舉類型是這么用的?在什么場(chǎng)景下會(huì)用到枚舉?本文對(duì) go 語(yǔ)言枚舉做了詳細(xì)講解。 枚舉
    的頭像 發(fā)表于 09-02 09:43 ?5174次閱讀

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例圖書

    MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例圖書
    發(fā)表于 02-17 15:10 ?58次下載

    C語(yǔ)言枚舉簡(jiǎn)述

    C語(yǔ)言中,如果一個(gè)變量只有幾種可能的值,則可以定義為枚舉類型,所謂“枚舉”就是指把可能的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍內(nèi)。
    的頭像 發(fā)表于 03-24 15:15 ?789次閱讀

    如何解決C語(yǔ)言中的“訪問(wèn)權(quán)限沖突”異常?C語(yǔ)言引發(fā)異常原因分析

    如何解決C語(yǔ)言中的“訪問(wèn)權(quán)限沖突”異常?C語(yǔ)言引發(fā)異常原因分析? 在C
    的頭像 發(fā)表于 01-12 16:03 ?5630次閱讀

    枚舉有多大?c語(yǔ)言枚舉end的作用是什么?

    枚舉有多大?c語(yǔ)言枚舉end的作用是什么? 枚舉C語(yǔ)言中
    的頭像 發(fā)表于 01-19 14:19 ?593次閱讀
    RM新时代网站-首页