首页
/
每日頭條
/
生活
/
c語言中枚舉類型的用法
c語言中枚舉類型的用法
更新时间:2026-05-18 16:32:48

之前學習數據類型的時候,将枚舉類型歸類于構造數據類型。但在學習枚舉的過程中,有的人卻說枚舉是屬于基本數據類型,一時間分不清孰對孰錯。

不過,類型歸屬問題不是重點。重點是要知道枚舉是什麼東西,怎麼使用。下面就來看一下枚舉類型的定義和使用。

c語言中枚舉類型的用法(從零開始學習C語言枚舉類型的定義和使用)1

1. 什麼是枚舉類型?

枚舉(enum),表示為列舉、排列說明的意思。

其作用将有限個的特定數據組合在一起,分别給這些數據取一個别名。

舉個例子,畫一張地圖需要用到很多顔色,通常用數字來表示這些顔色。如紅色是 0 ,藍色是 1。

當程序編寫到一定規模的時候,可能就忘記了什麼數字代表什麼顔色,還得返回去查詢,就很麻煩。

如此一來,我們就可以用枚舉來給這些數字取一個别名。0 用 red 表示,1 用 blue 表示。我們就不需要知道什麼數字對應什麼顔色,隻要知道顔色的名字就可以了。

這樣做不僅可以方便我們記憶,同時可以讓程序更簡潔、更容易看懂。

2. 枚舉類型的定義

枚舉類型的定義方式和結構體、共用體的定義方式基本上是差不多的,區别是定義的關鍵字和花括号裡面的内容。

enum Tag{ Elements_list; } Variables_list;

枚舉類型定義必須要使用 enum 關鍵字,否則編譯器就不認識你是誰家的娃,直接就給你領到警察局去(報錯)。

結構體和共用體花括号裡面定義的是類型的成員,每個成員都必須包括成員類型以及成員名稱。

枚舉就不一樣了,花括号裡面的成員,是羅列出來的一個個元素别名,可以把這些别名理解為就是數據。而且分隔這些成員,使用的是逗号(,)而不是分号(;)。

枚舉中的數據是一個常量

常量在本質上,是一個不可修改的變量。即一開始是什麼值,到結果還是什麼值。不能通過賦值運算符,給它重新賦值。

和結構體、共用體一樣,定義枚舉類型變量的方式也有三種。

// 定義類型時定義變量 enum Color{red, blue, yellow} color; // 先定義類型,後定義變量 enum Color{red, blue, yellow}; enum Color color; // 沒有類型名稱,直接定義變量 enum{red, blue, yellow}color;

同樣,沒有類型名稱的枚舉,不使用 typedef 關鍵字,隻能在類型定義的時候定義變量。

3. 枚舉類型變量

枚舉在定義的時候,花括号裡面就已經将枚舉類型變量可能會有的幾種可能的值都羅列出來。可以通過賦值運算符,将枚舉成員賦給枚舉類型變量。

enum {a, b, c, d} num = d; // 3 num = c; // 2

如果沒有進行初始化或者賦值的操作,枚舉類型變量 num 默認是取值首位,即此時 num 内存中存儲的是常量 a。

enum {a, b, c, d} num; printf("%d", num); // 0

在枚舉中,每一位成員都是一個常量,都有個對應的數值。默認情況下,所有成員對應的數值都是整型,第一位為 0,第二位為 1,以此類推。

當然,我們也可以給這些成員給予不同的值。例如:我希望常量值是從 1 開始的。

enum{a=1, b, c, d} num;

此時隻需要在定義的時候将第一位常量成員的值定義為 1,而後每有一個成員,數值累加 1。

同時,枚舉成員的值也可以是不連續的。比如第一位是 0,但是我要搞一點特殊化,第二位我要讓它為 5。

enum{a, b=5, c, d} num;

如此一來,當 num = b 的時候,對應的數值就是 5,而後的 c、d 會根據枚舉的特性,進行累加,對應的值就是 6 和 7。

4. 枚舉類型的應用

前面在學習判斷結構的時候,其中有提到 switch 後面括号裡面的變量類型必須是整型、字符型、枚舉類型或者 class 類型。

下面就來看枚舉類型是怎麼應用到 switch 結構中。

#include<stdio.h> enum {red, blue, green, yellow} color; int main(){ color = blue; switch(color){ case red: printf("正在使用紅色顔料"); break; case blue: printf("正在使用藍色顔料"); break; case green: printf("正在使用綠色顔料"); break; case yellow: printf("正在使用黃色顔料"); break; } return 0; }

運行結果:正在使用藍色顔料

由于枚舉類型的數值默認是整型數值,且枚舉成員的數值是連續的,那麼也可以應用在 for 循環裡面。

這裡,我們隻需要記住第一個成員和最後一個成員,就可以知道這個枚舉一共有多少個成員。

#include<stdio.h> enum{a, b, c, d} num; int main(){ int count = 0; for(int i=a;i<=d;i ){ count ; } printf("一共有%d個成員.", count); return 0; }

運行結果:一共有4個成員.

總結

以上就是關于C語言枚舉類型的内容,包括了枚舉類型的介紹,定義方式,枚舉類型變量以及在 switch 結構和 for 循環結構中的應用。

如果您覺得文章還不錯的話,點個贊和關注,支持一下。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
綠水青山的詩句
綠水青山的詩句
綠水青山的詩句?客路青山外,行舟綠水前——王灣《次北固山下》,今天小編就來聊一聊關于綠水青山的詩句?接下來我們就一起去研究一下吧!綠水青山的詩句客路青山外,行舟綠水前。——王灣《次北固山下》釋義:海日東升,春意萌動,我放舟于綠水之上,繼續向...
2026-05-18
老年人的健康飲食
老年人的健康飲食
俗話說,家有一老,如有一寶,健康的飲食習慣對于每個人來說至關重要,尤其是老年人,随着年齡的增大,老年人身體機能減退,牙齒松動、消化功能下降、心血管疾病高發,所以在飲食上要比年輕人更加注意,除了少鹽、少油等飲食原則外,少食多餐、粗細搭配也是必...
2026-05-18
非遺項目亮相進博會第一屆
非遺項目亮相進博會第一屆
手指翻飛間,不到一分鐘,紅彤彤的進博會吉祥物“進寶”便在74歲的華興富手中誕生了。作為上海市非物質文化遺産撕紙的代表性傳承人,進博會開幕當晚,華興富在新聞中心“非遺客廳”現場演示了這一指尖上的智慧,引得現場觀衆贊歎不已。撕紙有着鮮明的藝術個...
2026-05-18
怎麼殺魚
怎麼殺魚
怎麼殺魚?第一步:先拍暈用刀背或者擀面杖拍幾下魚頭,将其拍暈便于操作,放在菜闆上;,我來為大家科普一下關于怎麼殺魚?以下内容希望對你有幫助!怎麼殺魚第一步:先拍暈。用刀背或者擀面杖拍幾下魚頭,将其拍暈便于操作,放在菜闆上;第二步:然後去鱗,...
2026-05-18
超5類線支持千兆嗎
超5類線支持千兆嗎
六類水晶頭和超五類水晶頭區别在于:結構,接觸片,鍍金層,線間距離等差異,一般來說超五類和六類的區别:1、結構不一樣,超五類普遍用一件單排,六類普遍用兩件式雙排或者三件式雙排,這樣才能達到六類的測試标準。2、接觸片和金片的鍍金厚度不會對超五類...
2026-05-18
Copyright 2023-2026 - www.tftnews.com All Rights Reserved