int,long和NSInteger的区别

首先看看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个字节为int的别名。

64位程序:NSInteger相当于int64_t,8个字节为long long的别名。

32位程序下几种类型的字节数:

32位类型字节数

64位下几种类型的字节数


64位类型字节数

看到上边的比较有什么问题吗?

在64位中int64_t转换成NSInteger正常,但是在32位中int64_t转换成NSInteger会溢出。

在兼容32位和64位系统时,int和long long比NSInteger可靠地多。

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

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

注释:

int的范围是-2147483648~2147483647。可以表示到10位数,再大就不行了。

long long的范围是-9223372036854775808~9223372036854775807。可以表示到19位,已经很大了,一般够用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容