C中的int和OC中的NSInteger區(qū)別

在c語言中,int和long的字節(jié)數(shù)是和操作系統(tǒng)指針所占位數(shù)相等。

但c語言中說,long的長度永遠大于或等于int

objective-c里,蘋果的官方文檔中總是推薦用NSInteger

它和int有什么區(qū)別呢,stackoverflow這幫大神給了答案。

原來在蘋果的api實現(xiàn)中,NSInteger是一個封裝,它會識別當前操作系統(tǒng)的位數(shù),自動返回最大的類型。

定義的代碼類似于下:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

You usually want to use NSInteger when you don't know what kind of processor architecture your code might run on, so you may for some reason want the largest possible int type, which on 32 bit systems is just an int, while on a 64-bit system it's a long.

總結:NSInteger與int的區(qū)別是NSInteger會根據(jù)系統(tǒng)的位數(shù)(32or64)自動選擇int的最大數(shù)值(int or long)。

轉:http://blog.csdn.net/freedom2028/article/details/8035847

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容