用到枚舉的時候咨堤,發(fā)現(xiàn)都忘的差不多了哭菇篡,先回頭看一下C語音枚舉的用法:
https://www.cnblogs.com/JCSU/articles/1299051.html
一、C語言枚舉語法
有以下幾種寫法:
1一喘,單純定義一種新的數(shù)據(jù)類型——枚舉
enum DAY {
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
//1,枚舉型是一個集合驱还,集合中的元素(枚舉成員)是一些命名的整型常量,元素間逗號隔開
//2, DAY 是一個標識符凸克,可以看成這個集合的名字议蟆,可以省略
//3,第一個枚舉成員默認值 0 ,后續(xù)枚舉成員的值在前一個成員上 +1
//4,可以人為設(shè)定枚舉成員的值触徐,從而自定義某個范圍的整數(shù)
//5,枚舉型是預(yù)處理指令 #define 的替代
//6,類型定義以分號咪鲜;結(jié)束
2,枚舉變量的聲明(使用枚舉類型對變量進行聲明撞鹉,不開辟內(nèi)存;具體定義變量時才開辟內(nèi)存)
(1)單純枚舉變量的聲明
char a; //變量a的類型為字符型char
char letter;
int x;
int y,z;
//同理颖侄,枚舉型
enum DAY yesterday; //變量yesterday鸟雏,today的類型為枚舉型enum DAY
enum DAY today;
(2)枚舉類型定義和變量聲明同時進行:
enum Day //此處DAY可以省略
{
Saturday,
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
} workday; //變量workday的類型為枚舉型enum DAY
enum week { Mon = 1, Tue, Wen, The, Fri, Sat, Sun} days; //變量days的類型為枚舉型enum week
enum BOOLEAN {false, true} end_flag, match_flag;
(3)用typedef關(guān)鍵字將枚舉類型定義成別名,并用別名進行變量聲明
typedef enum workday //此處workday可以省略不寫
{
Saturday,
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
} workday; //此處的workday是enum workday的別名
workday today, tomorrow;
注意:
同一個程序中不能定義同名的枚舉類型
不同的枚舉類型中览祖,也不能存在同名的命名常量
3孝鹊,使用枚舉類型的變量
//使用枚舉類型聲明變量,再對枚舉類型變量進行賦值
enum workday yesterday, today, tomorrow;
yesterday = Monday;
today = Tuesday;
tomorrow = Wednesday;
//聲明變量的同時進行賦值
enum workday yesterday = Monday展蒂,today = Tuesday又活,tomorrow = Wednesday;
//定義類型的同時聲明變量,然后對變量賦值
enum Day
{
Saturday,
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
} workday1, workday2, workday3;
void main ()
{
workday1 = Monday;
workday2 = Tuesday;
workday3 = Wednesday;
printf("%d %d %d \n", workday1, workday2, workday3); //輸出:1 2 3
}
二锰悼、OC枚舉語法
封裝成了NS_ENUM(...) 及 NS_OPTIONS(...)
從枚舉定義來看柳骄,NS_ENUM和NS_OPTIONS本質(zhì)是一樣的,僅僅從字面上來區(qū)分其用途箕般。NS_ENUM是通用情況耐薯,NS_OPTIONS一般用來定義具有位移操作或特點的情況(bitmask)。
//NS_ENUM可以在使用typedef的同時,確定枚舉的底層數(shù)據(jù)類型
//具體發(fā)展過程見 http://www.reibang.com/p/994dc9f4958d
//第一個參數(shù)是存儲新類型的類型曲初,第二個參數(shù)是起的別名
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,//第一個默認為0体谒,之后默認 = 前一個的值+1
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};