1.枚舉的定義
enum 枚舉名{ 枚舉元 素1,枚舉元素2,枚舉元素3...};
2.使用枚舉類型的好處
增加程序的可讀性,我們都知道在計算機中所有信息都是用二進制來表示的,如果你用二進制來表示某件事務是非常不直觀的,為了使程序更加直觀我們引入枚舉。
3.枚舉的應用
1 /*紅色、黃色、綠色、藍色,黑色*/ 2 enum color{red,yellor,green,blue,black}; 3 int main() 4 { 5 char user_color; 6 while(1) 7 { 8 printf("\n請輸入顏色"); 9 scanf("%d",&user_color); 10 switch(user_color) 11 { 12 case red: printf("\n你輸入的是紅色\n"); break; 13 case yellor: printf("\n你輸入的是黃色\n"); break; 14 case green: printf("\n你輸入的是綠色\n"); break; 15 case blue: printf("\n你輸入的是藍色\n"); break; 16 case black: printf("\n你輸入的是黑色\n"); break; 17 } 18 } 19 20 return 0; 21 }
枚舉元素列表中,每個元素只能是整型,如果我們不指定某個元素的大小,默認是從0開始排列,如第2行中的枚舉列表中red = 0、yellor = 1......black = 4,從這個代碼中我們可以看到紅色,黃色不再用數字表示,而是用枚舉元素來表示紅色、黃色等一些有意義的詞,而這個枚舉元素的名稱可以自己定義,枚舉元素本質還是數字。
4.用typedef關鍵字將枚舉類型定義成別名,並利用該別名進行變量聲明
1 typedef enum workday //此處的workday可以省略,或者改成其他,不會影響后面 2 { 3 saturday, 4 sunday, 5 monday, 6 tuesday, 7 wednesday, 8 thursday, 9 friday 10 } workday; //此處的workday為枚舉型enum workday的別名,類似於int
正如上邊代碼注釋所說,worday可以不要,代碼如下
1 typedef enum 2 { 3 saturday, 4 sunday, 5 monday, 6 tuesday, 7 wednesday, 8 thursday, 9 friday 10 } workday; //此處的workday為枚舉型enum workday的別名 11 workday today, tomorrow; //變量today和tomorrow的類型為枚舉型workday,也即enum workday
在程序中我們是直接可以用某個枚舉中的枚舉元素的,在STM32開發庫中這種枚舉用法非常多,下圖就是STM32庫中的代碼示例,利用這個方法開發庫,可以大大增加程序的可讀性。
1 typedef enum 2 { 3 LED1 = 0, 4 LED2 = 1, 5 LED3 = 2, 6 LED4 = 3 7 } Led_TypeDef; 8 9 typedef enum 10 { 11 BUTTON_WAKEUP = 0, 12 BUTTON_TAMPER = 1, 13 BUTTON_KEY = 2, 14 BUTTON_RIGHT = 3, 15 BUTTON_LEFT = 4, 16 BUTTON_UP = 5, 17 BUTTON_DOWN = 6, 18 BUTTON_SEL = 7 19 } Button_TypeDef;