c语言is int number,C语言中NSInteger,NSNumber以及Int的区别

NSInteger和NSNumber

首先:NSInteger,NSNumber并没有什么关系,更不要想当然的以为二者还有什么继承关系,甚至还有人问NSInteger是不是NSNumber的子类?答案当然是NO!!!NSInteger只是一个基本的数据类型,而NSNumber是OC的对象,并且NSNumber继承自NSValue,NSValue又继承自NSObject.

既然 NSInteger是基本类型,那么,使用起来就非常简单。 声明一个变量, NSInteger myInt; 直接赋值就可以了。 比如: myInt=8;

NSNumber 所拥有的类方法,如下:

+ (NSNumber*)numberWithChar: (char)value;

+ (NSNumber*)numberWithInt: (int)value;

+ (NSNumber*)numberWithFloat: (float)value;

+ (NSNumber*)numberWithBool: (BOOL) value;

NSNumber *myNumber,*floatnumber,*intNumber,*doublenumber,*charNumber;

myNumber = [NSNumber numberWithLong:0xabcdef];

floatnumber = [NSNumber numberWithFloat:12.34];

intNumber = [NSNumber numberWithInt:1000];

doublenumber = [NSNumber numberWithDouble:12345e+15];

charNumber = [NSNumber numberWithChar:'X'];

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

- (char)charValue;

- (int)intValue;

- (float)floatValue;

- (BOOL)boolValue;

- (NSString*)stringValue;

myInt = [intNumber intValue]; //获取对象的整型值

//[floatnumber floatValue];

//[doublenumber doubleValue];

//[charNumber charValue];

关于NSInteger 和Int:

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

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

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

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

NSInteger是一个封装,它会识别当前操作系统的位数,自动返回最大的类型。当你不知道你的操作系统是什么类型的时候,你通常会想要使用NSInteger,所以或许你想要你的int类型范围尽可能的大,用NSInteger,32位系统NSInteger是一个int,即32位,但当时64位系统时,NSInteger便是64位的。——所以就是一般推荐用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://www.mzph.cn/news/452534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git的GUI工具sourcetree的使用

一、Git的学习这部分学习廖雪峰的git教程,参加以下链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0001、首先是git的基本概念,如下图所示:整个git管理主要分为工作区、版本库&#xff0…

YY一下,扎克伯格做了一个什么样的AI家居助手?

对于这款令小扎太太抓狂的AI家居助手,难道就没人好奇吗? 据说,扎克伯格每年都要给自己定个目标,而他也即将完成今年的目标——打造一个AI家居助手。 当初,在定下这个目标时,小扎为我们简单描述了一下&…

Diango博客--2.博客从“裸奔”到“有皮肤”

文章目录0.思路引导1.更改视图函数,从数据库中获取数据2.网上下载模板,添加静态文件3.修改模板Templates中css、js文件的加载路径4.修改模板,引入模板变量,获取数据库数据0.思路引导 前文的Hello World 级别的视图函数特别简单&a…

抽象

人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是…

程序员的成长从开窍开始系列 一、如何摆脱低级错误的困扰

最近,有两位Google Maps API的初学者向我请教他们按照最简单例子写的程序为什么不能正常的运行。 其中一位用GTalk跟我交流,我仔细了看了他的代码,没看出问题,把代码保存在本地,打开Firefox的错误控制台,用…

脉冲时间宽度c语言,什么是脉冲宽度_脉冲宽度是什么意思

脉冲宽度是个很广泛的词,在不同的领域,脉冲宽度有不同的含义。脉冲宽度从学术角度讲就是电流或者电压随时间有规律变化的时间宽度,平时研究主要是方波,三角波,锯齿波,正弦函数波等等,这些波形变…

HDU - 5919 Sequence II

题意: 给定长度为n的序列和q次询问。每次询问给出一个区间(L,R),求出区间内每个数第一次出现位置的中位数,强制在线。 题解: 用主席树从右向左的插入点。对于当前点i,如果a[i]出现过…

Django博客--3.创作后台开启

文章目录0.创建admin后台管理员账号1.在 admin 后台注册模型2.汉化应用的标题3.汉化应用下各个模块的名称4.汉化应用下各个模块的属性的名称5.文章列表显示更加详细的信息6.简化新增文章的表单7.自动设置文章作者为当前用户8.设定创建时间为当前时间9.设定修改建时间为保存时的…

逐步求精

逐步求精定义为为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 逐步求精最初是由NiklausWirth提出的一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。通过逐步分解对功能的宏观陈述而开发出层次结构…

raid-6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)

一、故障描述机房突然断电导致整个存储瘫痪,加电后存储依然无法使用。经过用户方工程师诊断后认为是断电导致存储阵列损坏。整个存储是由12块日立硬盘(3T SAS硬盘)组成的RAID-6磁盘阵列,被分成一个卷,分配给几台Vmware…

编写登录注册

const readline require(readline-sync);let error 3;let user [{username: 001,password: 123}, {username: 002,password: 456}, {uesrname: 003,password: 789}]//登录let denglu function () {while (true) {console.log(请输入您的登录账号:);let username…

android将字符串转化为json,将字符串转换为JSON数组

将字符串转换为JSON数组我从Web服务获得以下字符串的JSON,并尝试将其转换为 JSONarray{"locations": [{"lat": "23.053","long": "72.629","location": "ABC","address": "D…

谈新技术学习方法-如何学习一门新技术新编程语言

学习一门编程语言或者编程技术的方式基本上是这样一个流程: 1,对学习这门语言或者技术的必要性进行评估。比如你是工作需要,或者兴趣所至,甚至是为了把妹。这个必要性关系到你要学多深入,需要学习多长时间。 比如我想…

信息隐藏和局部化

信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化是指把一些关系密切的软件元素物理地放得彼此靠近。 如果在测试期间和以后的软件维护期间需要修改软件&#…

图像识别自动化android,Android自动化测试

写在开头:Android UI 自动化测试推荐网易的Airtest,也是谷歌推荐的,操作简单,而且基于图像识别根据用户操作界面自动生成Python测试代码JUnit单元测试testImplementation junit:junit:4.12image.pngimage.png使用gradle命令进行单…

如何重构“箭头型”代码

本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多…

Django博客--4.开发博客文章详情页

文章目录0.思路引导1.设计文章详情页的 URL2.获取文章的URL3.编写 detail 视图函数4.编写详情页模板5.更改主页中跳转详情页的地址链接6.模板继承--抽取base.html7.模板继承--修改 index.html使其继承base.html8.模板继承--修改detail.html使其继承base.html9.结果展示0.思路引…

10、并发容器,ConcurrentHashMap

Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包…

程序员的本质

Computers are useless. They can only give you answers. – Picasso计算机没有什么作用。他们只能告诉你答案。——毕加索很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员。另外一些人认为程序员是天才&#x…

模式-视图-控制器模式2.0

1 MVC的实现   1.1 分析应用问题,对系统进行分离   分析应用问题,分离出系统的内核功能、对功能的控制输入、系统的输出行为三大部分。设计模型部件使其封装内核数据和计算功能,提供访问显示数据的操作,提供控制内部行为的操作…