C中的枚舉類型及一些用法


  在C中定義了一種特殊的數據類型:枚舉。但這並不是C的首創,之前Pascal有,C之后的Java也有,但是C的枚舉類型並不是那么的好用。今天在看視頻的時候,翁愷老師正好在講枚舉,也就在此總結一下。

  枚舉的好處在於它可以使一些數字符號化,然后增強程序的可讀性。當然const double pi=3.14這種方法也可以達到這樣的效果,但如果很多數字都需要這樣的處理,那么枚舉就很方便了。

  enum 枚舉類型的名字{name0,name1…namen}

  這就是枚舉的格式 ,注意枚舉中的那些name之類的符號並不是真正意義上的符號,而是整形。如name0到namen,就是0-n-1.(當然我們也可以單獨賦特定的值),所以輸出和輸入枚舉類型的時候都需要按照整形來處理。

  如:

#include <stdio.h>
enum COLOR{red,green,blue};
int main()
{
    enum COLOR color;
    scanf("%d",&color);
    printf("%d",color);   //輸入和輸出仍然是整形數據,不能輸入字符串。。。
    return 0;
}
#include <stdio.h>
enum COLOR{red,green,blue};
void fun(enum COLOR color)
{
    printf("%d",color);
}
int main()
{
    enum COLOR color=red;
    fun(color);
    return 0;
}

永遠記住C語言中枚舉仍然是按照整形變量來處理的,自然包括輸入和輸出。

同時枚舉類型中可以有一個自動計數的小套路,當我們沒有給name0-namen賦值的時候,它的值是0-n-1。所以我們可以用一個無意義叫做Nums的東西放到枚舉變量中的最后,用來統計這個枚舉變量中一共有多少個量(當然是指有意義的)。

如:

enum COLOR{red,green,blue,Nums};

通過這種方式,也可以運用到for循環等語句結構中。

但我們需要小心的是,如果直接賦一個整形的數據給枚舉變量,現在的編譯器是不會報錯的。但這樣的后果也就會導致我們可能得到了一個沒有實際意義的結果。因為枚舉本身就是為了方便閱讀程序。

#include <stdio.h>
enum COLOR{red=1,green,blue};
void fun(enum COLOR color)
{
    printf("%d\n",color);
}
int main()
{
    enum COLOR color=red;
    enum COLOR color2=0;
    fun(color);
    fun(color2);
    return 0;
}

如,這里0在COLOR中並沒有意義,但是還是會輸出一個0。


免責聲明!

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



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