int,long和NSInteger的區(qū)別

首先看看NSInteger的apple解釋:

typedef long NSInteger;

When building 32-bit applications, NSInteger is a 32-bit integer. A 64-bit application treats NSInteger as a 64-bit integer.

32程序:NSInteger相當于int32_t,4個字節(jié)為int的別名。

64位程序:NSInteger相當于int64_t,8個字節(jié)為long long的別名。

32位程序下幾種類型的字節(jié)數(shù):

32位類型字節(jié)數(shù)

64位下幾種類型的字節(jié)數(shù)


64位類型字節(jié)數(shù)

看到上邊的比較有什么問題嗎?

在64位中int64_t轉換成NSInteger正常,但是在32位中int64_t轉換成NSInteger會溢出。

在兼容32位和64位系統(tǒng)時,int和long long比NSInteger可靠地多。

因此在不考慮兼容32的時候:一般直接使用NSInteger就好了。

在考慮兼容的時候,使用int和long long就好了。

注釋:

int的范圍是-2147483648~2147483647。可以表示到10位數(shù),再大就不行了。

long long的范圍是-9223372036854775808~9223372036854775807??梢员硎镜?9位,已經很大了,一般夠用了。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容