自定義類型
自定義類型一共只有三種:
1.結構體類型
2.枚舉類型
3.聯合類型
枚舉類型
- 如果一個變量只有幾種可能的值,則可以定義爲枚舉類型,所謂“枚舉”就是把可能的值 一 一 列舉出來,變量的值只限於列舉出來的值得範圍內
- 聲明枚舉類型用enum開頭
枚舉類型的聲明與定義
枚舉類型的聲明:
enum Weekday{
sun, //週日
mon, //週一
tue, //週二
wed, //週三
thu, //週四
fri, //週五
sat //週六
};
enum sex{
male,
female
};
定義變量:
enum Weekday workday,weekend; //定義兩個Weekday類型的枚舉變量
enum sex human; //定義一個sex類型的枚舉變量
以上定義的enum Weekday , enum sex都是枚舉類型
{ }中的內容是枚舉類型的可能取值,也叫枚舉常量
這些可能值都是可以賦值的,默認賦值是從0開始,以1遞增,在定義時可以賦值
enum sex{
male,
female
};
enum sex s1 = male;
enum sex s2 = female;
printf("%d %d\n", s1, s2); // 0 1
enum sex{
male,
female = 3
};
enum sex s1 = male;
enum sex s2 = female;
printf("%d %d\n", s1, s2); //0 3
enum sex{
male = 4,
female
};
enum sex s1 = male;
enum sex s2 = female;
printf("%d %d\n", s1, s2); //4 5
不建議這種賦值,會導致編譯器分不清male和female
enum sex{
male ,
female = 0
};
enum sex s1 = male;
enum sex s2 = female;
printf("%d %d\n", s1, s2); //0 0
枚舉的優點
#define也可以定義常量,爲什麼我們要使用枚舉來定義常量?
枚舉優點:
1.增加代碼的可讀性和可維護性
2.枚舉有類型檢查,更加嚴謹
3.防止命名污染(封裝性)
4.使用方便,一次性可以定義多個常量
枚舉的使用
enum Color{
RED = 1,
GREEN = 3,
BLUE = 5
};
enum Color color1 = RED; //合法,定義並初始化枚舉常量
color1 = 5; //非法,錯誤信息: 無法從“int”轉換爲“sex”
由上述測試代碼可知,枚舉類型變量的值只能是枚舉類型中的值,不可以是其他任何值