基本數(shù)據(jù)類型的有關(guān)概念

bool和BOOL的區(qū)別

說明:Objective-C 中的BOOL 實(shí)際上是一種對(duì)帶符號(hào)的字符類型(signed char)的類型定義(typedef),它使用8位的存儲(chǔ)空間。通過#define指令把YES定義為1,NO定義為0。
注意:objective-c 并不會(huì)將BOOL作為僅能保存YES或NO值的真正布爾類型來處理。編譯器仍將BOOL認(rèn)作8位二進(jìn)制數(shù),YES 和 NO 值只是在習(xí)慣上的一種理解。
問題:如果不小心將一個(gè)大于1字節(jié)的整型值(比如short或int)賦給一個(gè)BOOL變量,那么只有低位字節(jié)會(huì)用作BOOL值。如果該低位字節(jié)剛好為0(比如8960,寫成十六進(jìn)制為0x2300),BOOL值將會(huì)被認(rèn)作是0,即NO值。而對(duì)于bool類型,只有true和false的區(qū)別,即0為false,非0為true。
舉例:
BOOL b1=8960; // 實(shí)際是 NO,因?yàn)?960換成十六進(jìn)制為0x2300,BOOL 只有8位存儲(chǔ)空間,取0x2300的低8位,00,所以是NO;
bool b2=8960;//實(shí)際是true,因?yàn)閎ool類型,非0即為true。

NSInteger和int

object-c的數(shù)據(jù)類型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,這些都是class,創(chuàng)建后便是對(duì)象。
C語(yǔ)言的基本數(shù)據(jù)類型int,只是一定字節(jié)的內(nèi)存空間,用于存放數(shù)值;
NSInteger是基本數(shù)據(jù)類型,并不是NSNumber的子類,當(dāng)然也不是NSObject的子類。
NSInteger是基本數(shù)據(jù)類型Int或者Long的別名(NSInteger的定義typedef long NSInteger),它的區(qū)別在于,NSInteger會(huì)根據(jù)系統(tǒng)是32位還是64位來決定是本身是int還是Long。

引用(http://www.lxweimin.com/p/987fb6fb49dc)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容