iOS之列舉用法

2021-07-13 23:07:13 字數 2279 閱讀 4062

列舉是c語言中的一種基本資料型別,是乙個」被命名的整型常量」的集合,它不參與記憶體的占用和釋放,我們在開發中使用列舉的目的只有乙個,那就是為了增加**的可讀性

舉個例子,我們想要在開發中根據四季的變化做不同的操作,我們首先想到的可能會是定義乙個int型變數,通過為該變數賦不同的值來表示四季(e.g. 1為春天,2為夏天,3為秋天,4為冬天).但是,對於閱讀該份**的人來講,他們並不能在短時間內就明白數字1234所代表的具體含義.這個時候,選擇使用列舉則可以應對該需求

在c語言中定義列舉型別的方式如下

enum 列舉名稱

;

以」定義乙個列舉名稱為test,擁有testa、testb等列舉成員的列舉型別」為例,定義方式如下

enum

test

;

注1: 當列舉成員都未設定」=整型常量」時,預設從第乙個識別符號開始,從0依次遞增加1

注2: 當為某個列舉成員設定」=整型常量」時,其後面的識別符號會在此基礎上依次遞增加1

在使用該列舉型別時,我們需要建立乙個列舉變數

enum 列舉名稱 列舉變數 =列舉變數值;
以」建立乙個列舉名稱為test的列舉變數test,並為其賦值testb」為例

enum test test =testb;
注: 列舉變數值的取值只能從對應列舉型別的列舉成員中選擇

我們也可以在定義列舉型別的同時定義列舉變數,該列舉變數不用初始化,可直接對其進行賦值並使用

enum

test

test;

注: 該列舉名稱可以省略,直接定義列舉變數即可(稱作」匿名列舉」)

通過typedef為列舉型別設定乙個」別名」,這樣便可以像使用int一樣使用列舉型別

typedef enum

_test

test;

定義」別名」後,便可採用如下方式定義列舉變數

test test =testb;
針對匿名列舉,在通過typedef設定」別名」便變成如下形式

typedef enum

test;

定義」別名」後,便可採用如下方式定義列舉變數

test test =testb;
ns_enum使用示例
typedef ns_enum(nsinteger, test)

;

ns_options使用示例
typedef ns_options(nsuinteger, test) ;
typedef ns_options(nsuinteger, test) ;
帶有移位運算的列舉多用於同乙個列舉變數可以同時賦值多個列舉成員的情況,其原理就是將各個列舉值按位或(|),因為移位運算的列舉成員可以保證按位或(|)計算之後結果的唯一性,所以每種結果都能反向計算出是由哪幾個列舉成員按位或(|)而成

以」使用按位或(|)為列舉變數test同時賦值列舉成員testa、testb與testc」為例

test test = testa | testb;

test |= testc;

以」使用按位異或(^)為列舉變數test去掉乙個列舉成員testc」為例

test test =testa | testb | testc;

test ^= testc;

注: 如果列舉變數test本身並未賦值testc,那麼使用按位異或(^)會為列舉變數test多賦值乙個列舉成員testc

以」使用按位與(&)判斷列舉變數test是否賦值了列舉成員testa」為例

test test = testa | testb;

if (test & testa)

else

ios 關於列舉的使用

ios: 列舉型別 enum,ns_enum,ns_options

列舉用法例項

函式功能是在定義的顏色陣列中查詢是否有從鍵盤中輸入的顏色,如果有則列印響應的字串,否則列印未找到的資訊,並提示是否重新輸入。使用列舉值 include include include enum spectrum 宣告列舉 const char colors 字串陣列 define len 30 in...

3 列舉用法

列舉結構如下 enum 列舉變數名 變數型別 或者 enum 列舉變數名 變數型別 變數型別可以是 byte,sbyte,short,ushort,int,uint,long,ulong,如果列舉名稱沒有賦值的話,預設是從0開始遞增的。上 測試 enum e byte class program m...

C 列舉用法總結

enumeration的預設值是從0開始的int如下 enum direction 此時up 0,down 1.依此類推 改變預設值 enum direction 改變型別 只能改變成 byte,sbyte,short,ushort,int,uint,long,ulong enum directio...