前言
前段時間我們講完了指標和結構體, 這次我們來講列舉型別, 什麼是列舉呢? 打個比方, 比如我們乙個星期有七天, 從周一到週日, 這是固定不變, 不可能無端端的跳出乙個星期八出來, 在這種固定的情況下, 我們如果要寫乙個程式去固定這七天, 並且不讓別人亂修改, 為了滿足這個需求, 列舉就誕生啦.
開始首先我們來看看乙個需求, 一年固定有四個季節, 需要用列舉去實現, 那麼我們要怎麼做呢? 來看看下面這個例子吧:
#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 ...