C語言學習筆記之枚舉(enum)


枚舉:

一、枚舉

  枚舉的語法定義格式為:
  enum 枚舉名 {枚舉元素1,枚舉元素2,....} 

  舉例

1 # define MON 1
2 # define TUE 2
3 # define WED 3
4 # define THU 4
5 # define FRI 5
6 # define SAT 6
7 # define SUN 7
1 enum DAY
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 };

  第一個枚舉成員的默認值為整形的0,后續枚舉成員的值在前一個成員加上1。我們在這個實例中把第一個枚舉成員的值定義為1,第二個就為2,以此類推。

1 enum season {spring,sunmmer=3,autumn,winter};

  沒有指定值的枚舉元素,其值為前一元素加1.所以spring的值為0,summer的值為3,autumn的值為4,winter的值為5

  剛才只是聲明了枚舉類型,並不是定義了枚舉變量
二、枚舉變量的定義
  2.1先定義枚舉類型,再定義枚舉變量

1 enum DAY
2 {
3     MON=1,THE,WED,THU,FRI,SAT,SUN
4 };
5 enum DAY day;

  2.2定義枚舉類型的同時定義枚舉變量

1 enum DAY
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 }day;

  2.3省略枚舉名稱,直接定義枚舉變量

1 enum
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 }day;

  舉例:

 1 # include <stdio.h>
 2 
 3 enum DAY
 4 {
 5     MON=1,TUE,WED,THU,FRI,SAT,SUN
 6 };
 7 
 8 int main()
 9 {
10     enum DAY day;
11     day=WED;
12     printf("%d",day);
13     return 0;
14 }

  在C語言中,枚舉類型是被當做int或者unsigned int來處理的,所以按照C語言的規范是沒有辦法遍歷枚舉類型的。
  不過在一些特殊的情況下,枚舉類型必須連續是可以實現有條件的遍歷。

下面實例用for來遍歷枚舉的元素。

 1 #include<stdio.h>
 2  
 3 enum DAY
 4 {
 5       MON=1, TUE, WED, THU, FRI, SAT, SUN
 6 } day;
 7 int main()
 8 {
 9     // 遍歷枚舉元素
10     for (day = MON; day <= SUN; day++) {
11         printf("枚舉元素:%d \n", day);
12     }
13 }

  以下枚舉類型不連續,這種枚舉無法遍歷

1 enum
2 {
3     ENUM_0,
4     ENUM_10 = 10,
5     ENUM_11
6 };

  將整數轉換為枚舉:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3  
 4 int main()
 5 {
 6  
 7     enum day
 8     {
 9         saturday,
10         sunday,
11         monday,
12         tuesday,
13         wednesday,
14         thursday,
15         friday
16     } workday;
17  
18     int a = 1;
19     enum day weekend;
20     weekend = ( enum day ) a;  //類型轉換
21     //weekend = a; //錯誤
22     printf("weekend:%d",weekend);
23     return 0;
24 }

整理自菜鳥教程 https://www.runoob.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM