歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言之枚舉的定義以及測試

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

Copyright © Linux教程網 All Rights Reserved