C語言基礎 C語言列舉 列舉型別的基本認識

2022-08-30 12:57:10 字數 2001 閱讀 7918

前言

前段時間我們講完了指標和結構體, 這次我們來講列舉型別, 什麼是列舉呢? 打個比方, 比如我們乙個星期有七天, 從周一到週日, 這是固定不變, 不可能無端端的跳出乙個星期八出來, 在這種固定的情況下, 我們如果要寫乙個程式去固定這七天, 並且不讓別人亂修改, 為了滿足這個需求, 列舉就誕生啦.

開始首先我們來看看乙個需求, 一年固定有四個季節, 需要用列舉去實現, 那麼我們要怎麼做呢? 來看看下面這個例子吧:

#include int main()

;

enum season s = spring;

enum season b = 1000; //由於c語言是弱語法, 所以這樣子賦值也是可以編譯通過的

return 0;

}

上面這個例子就是最簡單的列舉型別的定義以及使用,  在呼叫列舉型別的時候, 就只能用裡面的四個列舉型別成員.

ps: 由於c語言是一種弱語法, 沒有強硬規定別的值不可以給列舉型別使用, 所以給列舉型別變數隨便賦值也是可以的, 但有是優秀的程式設計師都會嚴格要求自己去遵循一些書寫規範, 希望大家也要嚴格要求自己.

補充知識:

我們說的列舉, 裡面定義的幾個列舉成員變數, 他們是怎麼儲存的? 其實他們是以整型常量型別儲存的, 讓我們來看看輸出的結果如何:

#include int main()

;

enum season s = spring;

printf("spring = %d\n", s);

return 0;

}

輸出結果:

那麼以此類推

summer 是1

autumn 是2

winter 是3

那如果我們改掉了其中乙個值呢? 讓我們來看看例子吧:

#include int main()

;

enum season a = spring;

enum season b = summer;

enum season c = autumn;

enum season d = winter;

printf("spring = %d\n", a);

printf("summer = %d\n", b);

printf("autumn = %d\n", c);

printf("winter = %d\n", d);

return 0;

}

輸出結果:

那如果我不是從頭開始改變, 而是從中間某乙個開始改呢?

讓我們來繼續看看:

#include int main()

;

enum season a = spring;

enum season b = summer;

enum season c = autumn;

enum season d = winter;

printf("spring = %d\n", a);

printf("summer = %d\n", b);

printf("autumn = %d\n", c);

printf("winter = %d\n", d);

return 0;

}

輸出的結果:

由此我們可以看出, 預設是從0~3, 如果從頭改掉乙個, 那麼後面就會逐漸的增加, 如果從中間開始改的話, 那麼中間的那個值之後的列舉成員就會跟著那個被改值後繼續增加.

說的有點拗口, 但大家可以根據上面的例子和圖來自行理解, 相信大家都懂的.

C語言列舉型別

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

C語言列舉型別

實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年只有十二個月,乙個班每週有六門課程等。c語言提供了一種 列舉 enum 型別,可以列出所有可能的取值。定義形式為 enum 變數名 這些值也稱為 列舉元素 注意最後的分號 不能少。例如,列出乙個星期有幾天 enum week...

c語言列舉型別

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