C語(yǔ)言實(shí)現(xiàn)enum枚舉
枚舉是 C 語(yǔ)言中的一種基本數(shù)據(jù)類(lèi)型,它可以讓數(shù)據(jù)更簡(jiǎn)潔,更易讀。
枚舉語(yǔ)法定義格式為:
enum 枚舉名 {枚舉元素1,枚舉元素2,……};
接下來(lái)我們舉個(gè)例子,比如:一星期有 7 天,如果不用枚舉,我們需要使用 #define 來(lái)為每個(gè)整數(shù)定義一個(gè)別名:
#define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7
這個(gè)看起來(lái)代碼量就比較多,接下來(lái)我們看看使用枚舉的方式:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
這樣看起來(lái)是不是更簡(jiǎn)潔了。
注意:第一個(gè)枚舉成員的默認(rèn)值為整型的 0,后續(xù)枚舉成員的值在前一個(gè)成員上加 1。我們?cè)谶@個(gè)實(shí)例中把第一個(gè)枚舉成員的值定義為 1,第二個(gè)就為 2,以此類(lèi)推。
可以在定義枚舉類(lèi)型時(shí)改變枚舉元素的值:
enum season {spring, summer=3, autumn, winter};
沒(méi)有指定值的枚舉元素,其值為前一元素加 1。也就說(shuō) spring 的值為 0,summer 的值為 3,autumn 的值為 4,winter 的值為 5
枚舉變量的定義
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
2、定義枚舉類(lèi)型的同時(shí)定義枚舉變量
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3、省略枚舉名稱,直接定義枚舉變量
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
實(shí)例
#include <stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
int main()
{
enum DAY day;
day = WED;
printf("%d",day);
return 0;
}
以上實(shí)例輸出結(jié)果為:
3
在C 語(yǔ)言中,枚舉類(lèi)型是被當(dāng)做 int 或者 unsigned int 類(lèi)型來(lái)處理的,所以按照 C 語(yǔ)言規(guī)范是沒(méi)有辦法遍歷枚舉類(lèi)型的。
不過(guò)在一些特殊的情況下,枚舉類(lèi)型必須連續(xù)是可以實(shí)現(xiàn)有條件的遍歷。
以下實(shí)例使用 for 來(lái)遍歷枚舉的元素:
實(shí)例
#include <stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
int main()
{
// 遍歷枚舉元素
for (day = MON; day <= SUN; day++) {
printf("枚舉元素:%d \n", day);
}
}
以上實(shí)例輸出結(jié)果為:
枚舉元素:1
枚舉元素:2
枚舉元素:3
枚舉元素:4
枚舉元素:5
枚舉元素:6
枚舉元素:7
以下枚舉類(lèi)型不連續(xù),這種枚舉無(wú)法遍歷。
enum
{
ENUM_0,
ENUM_10 = 10,
ENUM_11
};
枚舉在 switch 中的使用:
實(shí)例
#include <stdio.h>
#include <stdlib.h>
int main()
{
enum color { red=1, green, blue };
enum color favorite_color;
/* 用戶輸入數(shù)字來(lái)選擇顏色 */
printf("請(qǐng)輸入你喜歡的顏色: (1. red, 2. green, 3. blue): ");
scanf("%u", &favorite_color);
/* 輸出結(jié)果 */
switch (favorite_color)
{
case red:
printf("你喜歡的顏色是紅色");
break;
case green:
printf("你喜歡的顏色是綠色");
break;
case blue:
printf("你喜歡的顏色是藍(lán)色");
break;
default:
printf("你沒(méi)有選擇你喜歡的顏色");
}
return 0;
}
以上實(shí)例輸出結(jié)果為:
請(qǐng)輸入你喜歡的顏色: (1. red, 2. green, 3. blue): 1
你喜歡的顏色是紅色
將整數(shù)轉(zhuǎn)換為枚舉
以下實(shí)例將整數(shù)轉(zhuǎn)換為枚舉:
實(shí)例
#include <stdio.h>
#include <stdlib.h>
int main()
{
enum day
{
saturday,
sunday,
monday,
tuesday,
wednesday,
thursday,
friday
} workday;
int a = 1;
enum day weekend;
weekend = ( enum day ) a; //類(lèi)型轉(zhuǎn)換
//weekend = a; //錯(cuò)誤
printf("weekend:%d",weekend);
return 0;
}
以上實(shí)例輸出結(jié)果為:
weekend:1
到此這篇關(guān)于C enum(枚舉)的文章就介紹到這了,更多相關(guān)枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言中的數(shù)據(jù)整除判斷問(wèn)題
這篇文章主要介紹了C語(yǔ)言中的數(shù)據(jù)整除判斷問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
CLion搭建配置C++開(kāi)發(fā)環(huán)境的圖文教程 (MinGW-W64 GCC-8.1.0)
這篇文章主要介紹了CLion搭建配置C++開(kāi)發(fā)環(huán)境的教程 (MinGW-W64 GCC-8.1.0),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
C語(yǔ)言實(shí)現(xiàn)職工工資管理系統(tǒng)
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
linux c++模擬簡(jiǎn)易網(wǎng)絡(luò)爬蟲(chóng)實(shí)例
下面小編就為大家?guī)?lái)一篇linux c++模擬簡(jiǎn)易網(wǎng)絡(luò)爬蟲(chóng)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
C++友元函數(shù)和友元類(lèi)的使用與區(qū)別
本文主要介紹了C++友元函數(shù)和友元類(lèi)的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)快速排序
快速排序是一種不穩(wěn)定排序,這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)快速排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
使用C語(yǔ)言判斷當(dāng)前存儲(chǔ)大小端問(wèn)題
這篇文章主要介紹了如何使用C語(yǔ)言判斷當(dāng)前存儲(chǔ)大小端問(wèn)題,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02

