之前學習數據類型的時候,将枚舉類型歸類于構造數據類型。但在學習枚舉的過程中,有的人卻說枚舉是屬于基本數據類型,一時間分不清孰對孰錯。
不過,類型歸屬問題不是重點。重點是要知道枚舉是什麼東西,怎麼使用。下面就來看一下枚舉類型的定義和使用。
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 循環結構中的應用。
如果您覺得文章還不錯的話,點個贊和關注,支持一下。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!