C中的int和OC中的NSInteger区别

Posted 星星太阳鱼虾蟹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中的int和OC中的NSInteger区别相关的知识,希望对你有一定的参考价值。

在c语言中,int和long的字节数是和操作系统指针所占位数相等。

但c语言中说,long的长度永远大于或等于int

objective-c里,苹果的官方文档中总是推荐用NSInteger

它和int有什么区别呢,stackoverflow这帮大神给了答案。

原来在苹果的api实现中,NSInteger是一个封装,它会识别当前操作系统的位数,自动返回最大的类型。

定义的代码类似于下:

 

#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的区别是NSInteger会根据系统的位数(32or64)自动选择int的最大数值(int or long)。

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

以上是关于C中的int和OC中的NSInteger区别的主要内容,如果未能解决你的问题,请参考以下文章

int 和 NSInteger 有啥区别? [复制]

int、NSInteger 和 NSUInteger 的区别

NSInteger 和 int 区别

swift学习第二天:swift中的基本数据类型

OC和C的区别?

第一个OC类