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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中枚舉精講分析

嵌入式應用開發(fā) ? 來源:嵌入式應用開發(fā) ? 作者:嵌入式應用開發(fā) ? 2022-03-02 10:58 ? 次閱讀

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

poYBAGId5zWAM5VuAABvCUVJRFA974.png

利用宏定義方式實現星期查詢

大家可以自己運行代碼嘗試一下,這里結果不做展示。
這種方式實現查詢是沒有問題的,但是過多的宏名定義占用資源而且讓代碼看起來非常冗余。C語言提供了一種枚舉(Enum)類型,能夠列出所有可能的取值,并給它們取一個名字。
枚舉類型的定義
按照C語言的要求可以進行如下定義
enum typeName { valueName1, valueName2, valueName3, ...... };
enum是一個新的關鍵字,專門用來定義枚舉類型;
typeName是枚舉類型的名字;
valueName1, valueName2, valueName3, ......是每個值對應的名字的列表。
注意最后的;不能少。

還是按照之前的要求我們去查詢客戶的星期可以建立如下的枚舉:
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
這里我們僅僅給出了名字,卻沒有給出名字對應的值,這是因為枚舉值默認從 0 開始,往后逐個加 1(遞增);也就是說,week 中的 Mon、Tues ...... Sun 對應的值分別為 0、1 ...... 6。
枚舉數據的初始化
枚舉數據初始化的幾種方式
1.當我們按照常規(guī)的定義時,軟件默認的枚舉成員從0開始計數依次增加1;
2.在定義名稱時對成員進行賦值(注意:這里賦值可以為負數,枚舉取值類型:byte、sbyte、short、ushort、int、uint、long 或 ulong)實例代碼如下:
enum process{ pro1 = -5, pro2 = -3,pro3 = -1,pro4 = 5 };
3.如果我們需要建立的枚舉成員值是從某個數依次增加1,那只需要給第一個成員賦值即可,后面的成員值依次加一,示例代碼如下:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
4.枚舉是一種類型,通過它可以定義枚舉變量,在定義枚舉類型的同時定義變量:
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;
}


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

使用枚舉完成實現星期幾的查詢代碼如下:
#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;
}

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

    關注

    5045

    文章

    18817

    瀏覽量

    298501
  • C語言
    +關注

    關注

    180

    文章

    7575

    瀏覽量

    134053
收藏 人收藏

    評論

    相關推薦

    C語言中枚舉的基本概念和常見用法

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

    詳細講解c語言enum枚舉類型

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

    C語言0基礎入門視頻教程分享

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

    51單片機C語言應用程序設計實例part03

    51單片機C語言應用程序設計實例(第二版),part03。
    發(fā)表于 05-20 14:28 ?29次下載

    51單片機C語言應用程序設計實例(第二版)part05

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

    51單片機C語言應用程序設計實例(第二版)part06

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

    MSP430單片機C語言應用程序設計實例一書中的程序

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

    枚舉C語言中的一種基本數據類型

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

    51單片機C語言應用程序實例的代碼合集免費下載

    本文檔的主要內容詳細介紹的是51單片機C語言應用程序實例的代碼合集免費下載。
    發(fā)表于 01-15 16:15 ?211次下載
    51單片機<b class='flag-5'>C</b><b class='flag-5'>語言</b>應用程序實例<b class='flag-5'>精</b><b class='flag-5'>講</b>的代碼合集免費下載

    MSP430單片機C語言應用程序設計實例(秦龍)

    MSP430單片機C語言應用程序設計實例
    發(fā)表于 06-21 15:53 ?8次下載

    go語言枚舉類型怎么用

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

    MSP430單片機C語言應用程序設計實例圖書

    MSP430單片機C語言應用程序設計實例圖書
    發(fā)表于 02-17 15:10 ?56次下載

    C語言枚舉簡述

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

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

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

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

    枚舉有多大?c語言枚舉end的作用是什么? 枚舉C語言中
    的頭像 發(fā)表于 01-19 14:19 ?446次閱讀