【C】一篇文章搞懂C語言的自定義類型之枚舉的入門到入墳

自定義類型

自定義類型一共只有三種:
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”

由上述測試代碼可知,枚舉類型變量的值只能是枚舉類型中的值,不可以是其他任何值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章