C語言列舉型別

2021-07-07 01:32:27 字數 974 閱讀 4406

實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年只有十二個月,乙個班每週有六門課程等。

c語言提供了一種

列舉(enum)

型別,可以列出所有可能的取值。定義形式為:

enum 變數名;

這些值也稱為

列舉元素

。注意最後的分號;不能少。

例如,列出乙個星期有幾天:

enum week;
和結構體一樣,列舉變數可以先定義後說明,也可以在定義的同時說明,例如:
enum week a, b, c;
或者:
enum week a, b, c;
列舉值為常量,不是變數,不能賦值。列舉值預設從0開始,逐個加1。也就是說,上面的**定義了7個常量,分別為 sun、mon…sat,它們的值分別為 0、1…6。

【示例】列舉的使用。

#include int main() a, b, c;

a = sun;

b = mon;

c = tue;

printf("%d, %d, %d\n",a,b,c);

return 0;

}

執行結果:

0, 1, 2

因為列舉值是常量,不能賦值,所以下面的寫法是錯誤的:

sun = 5;

mon = 2;

只能把列舉值賦予列舉變數,例如:
a = sun;

b = sat;

同時,不建議把數值直接賦給列舉變數,例如:
a = 1;

b = 6;

如果一定要使用數值,必須使用強制型別轉換:
a = (enum week)1;

b = (enum week)6;

因為已經使用了 sun、mon…sat 幾個識別符號,所以不能再使用它們來定義變數等,例如:
int sun = 3;

char mon;

都是錯誤的。

C語言列舉型別

在實際問題中,有些變數的取值被限定在乙個有限的範圍內。例如,乙個星期內只有七天,一年只有十二個月,乙個班每週有六門課程等等。如果把這些量說明為整型,字元型或其它型別顯然是不妥當的。為此,語言提供了一種稱為 列舉 的型別。在 列舉 型別的定義中列舉出所有可能的取值,被說明為該 列舉 型別的變數取值不能...

c語言列舉型別

在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在程式中,我們可以利用預處理指令 define來完成這項工作,如 define mon 1 define tue 2 define wed 3 define thu 4 define fri 5 define ...

C語言列舉型別

巨集和列舉都可以將變數換乙個別名 對比 巨集 列舉 差別 作用時期 儲存形式 巨集 預處理階段 替換,程式執行 不存在 列舉 程式執行 後 起作用,列舉常量 儲存 資料段 靜態儲存區里。巨集 佔 段 空間,列舉 佔空間 耗cpu資源。若定義非常多的常量 一條enum 比大堆define更清晰定義別名...