C语言中为什么要使用enum
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請注明出處,查看原文章,請?jiān)L問:http://blog.csdn.net/xingjiarong https://blog.csdn.net/xingjiarong/article/details/47275971
轉(zhuǎn)載請注明出處,否則將追究法律責(zé)任http://blog.csdn.net/xingjiarong/article/details/47275971
在C語言中有一個(gè)關(guān)鍵字是enum,枚舉類型,不知道大家平時(shí)用嗎,但是enum關(guān)鍵字在有些時(shí)候是非常方面的,下面說一下使用enum關(guān)鍵字的幾種情況。
一、一次定義多個(gè)常量。
比如說我們的程序中處理問題時(shí)與星期幾有關(guān),可能要將星期一轉(zhuǎn)換為數(shù)字1,星期二轉(zhuǎn)換為數(shù)字2,一直到數(shù)字7,在不用enum關(guān)鍵字的情況下,可以使用define來定義,但是大家會覺得很麻煩,因?yàn)槟阋粋€(gè)一個(gè)的定義,星期的還好說,只有7天,如果是月份呢,一年有12個(gè)月份,那就要寫12個(gè)define,非常的不方面,如果利用enum的話就會非常的方便。
#include<stdio.h>
enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};
int main()
{
? ? printf("%d",Tue);
? ? return 0;
}
1
2
3
4
5
6
7
8
9
10
11
這樣定義以后,Mon的值為1,Tue的值為2,Wed的值為3,一次類推。?
然后就可以像使用define之后的常量一樣的使用定義的7個(gè)值了。
如果開頭不寫Mon=1的話,Mon的默認(rèn)值為0,然后從0開始增長。例如:
enum color {red,blue,green,yellow};
1
如果這樣定義的話,red的值為0,blue的值為1,然后一次增長。
如果從中間開始賦值的話:
enum color {red,blue,green=5,yellow};
1
那么red到blue是按照默認(rèn)的從0開始增長的,green就是定義的值5,然后green之后的值都是從5開始增長的。
當(dāng)然你也可以為每個(gè)枚舉的變量都賦值,這樣就和全都用define定義是一樣的了,如果枚舉中有某個(gè)值沒有被賦值,那么它將是從前一個(gè)賦值的變?
量開始,一次增加1.
二、限定變量的范圍
比如我們的應(yīng)用程序中要處理有關(guān)月份的東西,顯然月份只能取1-12中的某個(gè)數(shù)字,為了保證程序的正確性和健壯性,我們應(yīng)該使用enum。
#include<stdio.h>
enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
int main()
{
? ? enum Month a = ?Feb;
? ? printf("%d",a);
? ? return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
比如像這樣,定義的枚舉類型 a 的取值只能是那12個(gè)變量中的一個(gè),如果賦予了其他的變量,編譯器就會報(bào)錯(cuò)。
使用enum可以有一下幾種方法:
1、在定義enum的同時(shí),聲明變量:
enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a,b;
1
這樣就聲明了兩個(gè)枚舉類型a和b
2、定義完enum之后再聲明變量:
enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
enum Month a = ?Feb;
1
2
3、定義匿名的枚舉變量
enum ?{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a;
1
這樣的話,只能使用a這一個(gè)枚舉類型的變量,不能再定義其他的枚舉類型。
---------------------?
作者:xingjiarong?
來源:CSDN?
原文:https://blog.csdn.net/xingjiarong/article/details/47275971?utm_source=copy?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的C语言中为什么要使用enum的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存的静态分配和动态分配的区别【转】
- 下一篇: STM32看门狗总结