C語言 枚舉類型


https://www.runoob.com/cprogramming/c-enum.html

C enum(枚舉)

枚舉是 C 語言中的一種基本數據類型,它可以讓數據更簡潔,更易讀。

枚舉語法定義格式為:

enum 枚舉名 {枚舉元素1,枚舉元素2,……};

接下來我們舉個例子,比如:一星期有 7 天,如果不用枚舉,我們需要使用 #define 來為每個整數定義一個別名:

#define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7

這個看起來代碼量就比較多,接下來我們看看使用枚舉的方式:

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

這樣看起來是不是更簡潔了。

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

可以在定義枚舉類型時改變枚舉元素的值:

enum season {spring, summer=3, autumn, winter};

沒有指定值的枚舉元素,其值為前一元素加 1。也就說 spring 的值為 0,summer 的值為 3,autumn 的值為 4,winter 的值為 5

枚舉變量的定義

前面我們只是聲明了枚舉類型,接下來我們看看如何定義枚舉變量。

我們可以通過以下三種方式來定義枚舉變量

1、先定義枚舉類型,再定義枚舉變量

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

2、定義枚舉類型的同時定義枚舉變量

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

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

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

實例

#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; }

以上實例輸出結果為:

3

在C 語言中,枚舉類型是被當做 int 或者 unsigned int 類型來處理的,所以按照 C 語言規范是沒有辦法遍歷枚舉類型的。

不過在一些特殊的情況下,枚舉類型必須連續是可以實現有條件的遍歷。

以下實例使用 for 來遍歷枚舉的元素:

實例

#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); } }

以上實例輸出結果為:

枚舉元素:1 枚舉元素:2 枚舉元素:3 枚舉元素:4 枚舉元素:5 枚舉元素:6 枚舉元素:7

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

enum { ENUM_0, ENUM_10 = 10, ENUM_11 };

枚舉在 switch 中的使用:

實例

#include <stdio.h>
#include <stdlib.h>
int main()
{
 
    enum color { red=1, green, blue };
 
    enum  color favorite_color;
 
    /* ask user to choose color */
    printf("請輸入你喜歡的顏色: (1. red, 2. green, 3. blue): ");
    scanf("%d", &favorite_color);
 
    /* 輸出結果 */
    switch (favorite_color)
    {
    case red:
        printf("你喜歡的顏色是紅色");
        break;
    case green:
        printf("你喜歡的顏色是綠色");
        break;
    case blue:
        printf("你喜歡的顏色是藍色");
        break;
    default:
        printf("你沒有選擇你喜歡的顏色");
    }
 
    return 0;
}

以上實例輸出結果為:

請輸入你喜歡的顏色: (1. red, 2. green, 3. blue): 1 你喜歡的顏色是紅色

將整數轉換為枚舉

以下實例將整數轉換為枚舉:

實例

#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;  //類型轉換
    //weekend = a; //錯誤
    printf("weekend:%d",weekend);
    return 0;
}

 

以上實例輸出結果為:

weekend:1

 


免責聲明!

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



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