C語言實(shí)現(xiàn)enum枚舉
枚舉是 C 語言中的一種基本數(shù)據(jù)類型,它可以讓數(shù)據(jù)更簡潔,更易讀。
枚舉語法定義格式為:
enum 枚舉名 {枚舉元素1,枚舉元素2,……};
接下來我們舉個(gè)例子,比如:一星期有 7 天,如果不用枚舉,我們需要使用 #define 來為每個(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è)看起來代碼量就比較多,接下來我們看看使用枚舉的方式:
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
這樣看起來是不是更簡潔了。
注意:第一個(gè)枚舉成員的默認(rèn)值為整型的 0,后續(xù)枚舉成員的值在前一個(gè)成員上加 1。我們在這個(gè)實(shí)例中把第一個(gè)枚舉成員的值定義為 1,第二個(gè)就為 2,以此類推。
可以在定義枚舉類型時(shí)改變枚舉元素的值:
enum season {spring, summer=3, autumn, winter};
沒有指定值的枚舉元素,其值為前一元素加 1。也就說 spring 的值為 0,summer 的值為 3,autumn 的值為 4,winter 的值為 5
枚舉變量的定義
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;
2、定義枚舉類型的同時(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 語言中,枚舉類型是被當(dāng)做 int 或者 unsigned int 類型來處理的,所以按照 C 語言規(guī)范是沒有辦法遍歷枚舉類型的。
不過在一些特殊的情況下,枚舉類型必須連續(xù)是可以實(shí)現(xiàn)有條件的遍歷。
以下實(shí)例使用 for 來遍歷枚舉的元素:
實(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
以下枚舉類型不連續(xù),這種枚舉無法遍歷。
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ù)字來選擇顏色 */ printf("請輸入你喜歡的顏色: (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("你沒有選擇你喜歡的顏色"); } return 0; }
以上實(shí)例輸出結(jié)果為:
請輸入你喜歡的顏色: (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; //類型轉(zhuǎn)換 //weekend = a; //錯誤 printf("weekend:%d",weekend); return 0; }
以上實(shí)例輸出結(jié)果為:
weekend:1
到此這篇關(guān)于C enum(枚舉)的文章就介紹到這了,更多相關(guān)枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CLion搭建配置C++開發(fā)環(huán)境的圖文教程 (MinGW-W64 GCC-8.1.0)
這篇文章主要介紹了CLion搭建配置C++開發(fā)環(huán)境的教程 (MinGW-W64 GCC-8.1.0),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02C語言實(shí)現(xiàn)職工工資管理系統(tǒng)
這篇文章主要介紹了C語言實(shí)現(xiàn)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02linux c++模擬簡易網(wǎng)絡(luò)爬蟲實(shí)例
下面小編就為大家?guī)硪黄猯inux c++模擬簡易網(wǎng)絡(luò)爬蟲實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06