1:什麼是枚舉
枚舉在C語言中其實就是一些符號常量集,簡單來說,枚舉就是定義了一些符號(字符串),這些字符的本質就是int類型的常量,每個符號和一個常量相綁定,那麼這個符號就成為了一個自定義的識別碼,對編譯器來說對枚舉的認知就是符號常量所綁定的那個int類型的數。直白來講,枚舉就是自己定義一些符號,然後這些符號對應int類型的數,對於程序員來講,這些符號可以幫助程序員理解代碼,而對於編譯器來講,編譯器是不認識我麼定義的枚舉符號的,編譯器只認識這個枚舉變量所對於的int類型的數
2:枚舉的作用
enum ER
{
error;
right;
}
int E_or_R(int a , int b)
{
if(a>b)
{
return right;
}
else
{
return error;
}
}
int main(void)
{
printf("plese input a & b \n");
scanf("%d%d",&a,&b);
int c = E_or_R(a , b);
if(c==right)
{
printf("a>b \n");
}
else(c==error)
{
printf("a<=b \n");
}
return 0;
}
如上面的代碼所示,我們通過枚舉元素right和error來判斷函數E_or_R()返回值,這樣就可以很直觀地看清楚代碼,(因為一般人覺得函數執行成功返回1,函數執行失敗返回1,但是不免有人寫代碼時會把函數執行成功返回0,函數執行失敗返回1)。
3:枚舉和宏定義的區別
我們知道,宏定義也是用來標示一些參數,讓程序員能更直觀地看懂代碼的方法,但是枚舉和宏定義又有區別,比如宏定義是分散定義的,而采用枚舉則可以集中定義在一個枚舉變量裡面,比如我現在要用 SUN MON 等來定義一周的星期
采用紅定義的方法是
#define SUN 0
#define MON 1
......
#define SAT 6
而采用枚舉的方法
12345678910 enum week
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
};
總上所述:
當我們要定義的常量是一個有限集合時(譬如一星期有7天,譬如一個月有31天,譬如一年有12個月····),最適合用枚舉。(其實宏定義也行,但是枚舉更好)
C語言枚舉測試
#include <stdio.h>
/* 定義方法1:只定義枚舉類型,不定義變量
enum week
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
};
*/
/*定義方法2:同時定義枚舉類型和變量
enum week
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
}today;
*/
/*定義方法3:同時定義枚舉類型和變量
enum week
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
}today,yestaday;
*/
/*定義方法4:
typedef enum week
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
}week;
*/
typedef enum
{
SUN, // SUN = 0
MON, // MON = 1;
TUE,
WEN,
THU,
FRI,
SAT,
}week;
int main(void)
{
/* 測試定義方法1
enum week today;
today = SUN;
printf("today is %dth \n",today);
*/
/*測試定義方法2 3
today = SUN;
yestaday = SAT;
printf("today is %dth \n",today);
printf("yestaday is %dth \n",yestaday);
*/
/*測試定義方法4 5
week yestaday;
yestaday = SAT;
printf("yestaday is %dth \n",yestaday);
*/
return 0;
}