枚舉

一、枚舉的作用

  • 枚舉在c語言中其實是一些符號常量集。
  • 直白的說:枚舉定義了一些符號,這些符號的本質(zhì)是int類型的常量,每個符號和一個常量綁定。這個符號就表示一個自定義的識別碼,編譯器對枚舉的認知就是符號常量所綁定的那個int類型的數(shù)字。
  • 枚舉中的枚舉值都是常量。
  • 枚舉符號常量和其對應(yīng)的常量數(shù)字來說,數(shù)字不重要,符號才重要。符號對應(yīng)的數(shù)字只要彼此不相同即可,一般我們不明確指定這個數(shù)字,讓編譯器自動分配。從0開始依次增加。
#include <stdio.h>
enum return_value     
{
        ERROR=23,
        RIGHT,
};
enum return_value func1(void)
{
        enum return_value r1;
        r1=ERROR;
        return r1;
}
int main(void)
{
        enum return_value r1=func1();
        if (r1==FRIGHT)
        {
                printf("函數(shù)執(zhí)行正確.\n");
        } 
        else
        {
                printf("函數(shù)執(zhí)行錯誤.\n");
        }
        printf("ERROR.\n",ERROR);     //0.23
        return 0;
}

二、c語言為何需要枚舉

  • c語言可以沒有枚舉。使用枚舉其實就是對1,0這些數(shù)字進行符號化編碼。好處就是編程時可以不看數(shù)字只看符號。符號的含義是顯然的,數(shù)字的含義需要文檔。
  • 宏定義的目的是:不用數(shù)字而用符號。從這可以看出宏定義和枚舉有內(nèi)在聯(lián)系。
  • 宏定義和枚舉大部分的時候是可以替換的。
#include <stdio.h>
//宏定義解決返回值問題
#define ERRPR 0
#define RIGHT 1
int func2(void)
{
        return ERROR;
}
int main(void)
{
        r1=func2();
        if (r1==FRIGHT)
        {
                printf("函數(shù)執(zhí)行正確.\n");
        } 
        else
        {
                printf("函數(shù)執(zhí)行錯誤.\n");
        }
        return 0;
}

三、枚舉和宏定義的區(qū)別

  • 枚舉是將多個有關(guān)聯(lián)的符號封裝在一個枚舉中,宏定義是完全散的。枚舉其實是多選一。
  • 當我們要定義的常量是一個有限集合時,最適合使用枚舉。
  • 定義的常量符號之間無關(guān)聯(lián),或者個數(shù)是無限的。

總結(jié)

  • 宏定義先出現(xiàn),后來發(fā)現(xiàn)符號常量之間彼此之間有多選一的關(guān)聯(lián)。用宏定義做不貼切,于是發(fā)明了枚舉這種數(shù)據(jù)結(jié)構(gòu)。

四、枚舉的定義和使用

  • 枚舉中的元素實質(zhì)是全局變量。
  • 枚舉和枚舉之間元素不能重名。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容