Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NSUInteger vs NSInteger、int vs unsigned以及类似的情况

NSUInteger vs NSInteger、int vs unsigned以及类似的情况
EN

Stack Overflow用户
提问于 2010-03-31 23:31:42
回答 4查看 36.3K关注 0票数 33

谁有专业知识来解释什么时候使用NSUInteger,什么时候使用NSInteger?

我曾经见过Cocoa方法返回NSInteger,即使在返回值总是无符号的情况下也是如此。

根本原因是什么?如果我们想表示负值,NSInteger或int是否被严格限制?

来自NSObjCRuntime.h:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-22 13:14:42

在处理NSUInteger与NSInteger时,您还应该了解整数转换规则:

例如,下面的代码片段返回0 (false),尽管您期望它打印1 (true):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSInteger si = -1;
NSUInteger ui = 1;
printf("%d\n", si < ui);

原因是si变量被隐式地转换为一个无符号整数!

有关这些“问题”以及如何解决这些“问题”的深入讨论,请参阅CERT's Secure Coding site

票数 33
EN

Stack Overflow用户

发布于 2014-09-02 21:37:10

默认情况下,假定整数是有符号的。换句话说,编译器假定将调用一个整数变量来存储负数或正数。这限制了范围在两个方向上都能达到的范围。例如,32位int的范围为4,294,967,295。实际上,由于该值可以是正数也可以是负数,因此其范围实际上是−2,147,483,648到+2,147,483,647。如果我们知道一个变量永远不会被调用来存储负值,我们可以将它声明为无符号,从而将(正)范围扩展到0到+4,294,967,295。所以我想说,当你知道你有一个有限的输出范围时,使用NSInteger是可以的。如果我需要返回非常大的仅为正的数字,我个人会使用NSUInteger

票数 21
EN

Stack Overflow用户

发布于 2010-03-31 23:36:09

如果您的方法的输出范围受到适当的限制,那么您最好使用NSInteger,因为它更容易输入。正如您所说,如果需要返回负数,NSInteger是唯一的选择;只有在出于某种原因需要返回非常大的数字时,我才会使用NSUInteger

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2557209

复制
相关文章
unsigned int数据范围16位_unsigned int几个字节
提到unsigned,大家应该都了解,有朋友问c语言中unsigned什么意思,还有人想问c语言中的unsigned是什么意思,这到底是咋回事?事实上unsigned呢,下面是小编推荐给大家的unsigned int,下面我们一起来看看吧!
全栈程序员站长
2022/11/05
6.4K0
unsigned int数据范围16位_unsigned int几个字节
编程规范之《招聘一个靠谱的iOS》
风格纠错题 风格纠错题.png enter image description here 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // 修改完的代码,这是第一种修改方法
rectinajh
2018/05/17
6420
PG:INT4 VS. FLOAT4 VS. NUMERIC
关系型数据库中数据类型是一个重要话题。PG提供很多不同类型,但并不是所有类型都相同。根据需要实现的目标,可能应用需要不同列类型。本文主要关注三种重要的数据类型:整型、浮点型、数字型。最近,我们看到了一些与这个话题相关的案例,我认为应该与公众分享这些知识,以确保读者避免最近在客户端应用程序中遇到的一些坑。
yzsDBA
2021/02/03
1.3K0
PG:INT4 VS. FLOAT4 VS. NUMERIC
常量接口 vs 常量类 vs 枚举区别
程序员 NEO
2023/10/12
1960
[Objective-C] 从NSInteger说开去
初写iOS时,我做的是把原项目从Android端移植到iOS端。因为涉及到不同语言,又因为不熟悉iOS,加上还要与用C写的网络库进行纠缠,我小心翼翼的用了基本数据类型完成大多数编码。能用int就坚决不用NSInteger,能用float就坚决不用CGFloat。你可能会问,虽然这个过程用到的语言很杂,写Objective-C的时候就大胆的用Foundation的数据类型呗。想法很好,只是当时我看不懂我们网络库实现原因不敢乱改代码,怕伤着哪个地方的逻辑,最后代码移着移着,我的.m文件就变成了.mm文件——对,变成Objective-C和C++混编代码了。当时就索性一股脑的用C语言的基本数据类型去做了。现在想想我入门iOS的过程真是坎坷呢,留下了一堆烂毛病。
wOw
2018/09/18
9650
抽象类VS接口
在学设计模式的过程中,有的模式定义了抽象类,有的模式定义了接口,这两种形式都体现了面向对象的抽象,但是抽象类和接口又有什么联系和区别呢?
全栈程序员站长
2022/08/09
3780
-1>1?! unsigned int的世界不简单
编程语言提供了很多的基本数据类型,比如char,int,float,double等等。在C和C++的世界中,还有一种类型,叫做无符号数据,修饰符位unsigned,比如今天要说的unsigned int。引入特殊的类型,一方面带来了好处,一方面也留下了隐患。
于果
2021/08/25
9370
VS Nuget的使用以及VS Code与git介绍
本文链接:https://blog.csdn.net/shujudeliu/article/details/80335349
zls365
2020/08/19
1K0
VS Nuget的使用以及VS Code与git介绍
抽象类vs接口
区别 抽象类的方法可以有方法体,而接口的方法不允许有方法体 抽象类中方法,如果没有加abstract修饰,必须定义方法体 类可以实现多个接口,但是只能继承一个抽象类 接口的方法都是public的,而抽象类可以自己设置权限。但是抽象类的抽象方法不能设置成private。 接口的成员必须初始化,而抽象类的不需要 抽象类可以实现接口,而接口不能实现接口 例子 public interface Car { int price = 1; void run(); } public abstract clas
jiewuyou
2022/09/29
2240
抽象类 VS 接口
接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同。接下来,我们来了解二者的概念并比较它们的异同。
雪飞鸿
2018/09/05
4410
抽象类 VS 接口
c++ int,unsigned int混合表达式类型转换
int和unsigned int的混合表达式,计算时会将int转换为unsigned int。普通情况下会将范围小的隐式转换为范围大的,但对于int和unsigned int,就说不准哪个范围大了,经测试是会将int转换为unsigned int
狼啸风云
2020/07/27
1.1K0
SQL SERVER 空格的“坑” VS PostgreSQL 类似的坑怎么避开
虽然公司在大力的往开源的数据库上转移,但传统数据库的使用在一段时间还是会存在的,最近开发的亲们报出一个怪异的现象,就是外部传进来得字符用在末尾带有 \u0001 (在SQL SERVER 里面这又特殊的含义可以理解为char(1)),存储进 nvarchar 字符类型后会带有一个空格(其实存进char也一样),而这样的数据在某些特殊的规则引擎或决策引擎中就会因为这多的一个空格而报错,而你去查的时候,他又不带空格。好吧 越说越乱,做个试验各位看客来看的明明白白。
AustinDatabases
2019/07/30
2.8K0
【解决】VS2019各种乱码的情况
首先我们先得知道windows下的中文是GBK编码,VS2019也是GBK编码,所以在windows里编程中文最好就是用GBK编码。
每天都要进步呀
2023/10/16
2K0
【解决】VS2019各种乱码的情况
python: "" vs None,is vs ==
当一个字符串被赋值为空字符串,即"",它是一个有效的字符串对象,只是其中没有任何字符。空字符串的布尔值是False。
运维开发王义杰
2023/09/09
2300
python: "" vs None,is vs ==
one-vs-rest与one-vs-one以及sklearn的实现
sklearn:multiclass与multilabel,one-vs-rest与one-vs-one 针对多类问题的分类中,具体讲有两种,即multiclass classification和multilabel classification。multiclass是指分类任务中包含不止一个类别时,每条数据仅仅对应其中一个类别,不会对应多个类别。multilabel是指分类任务中不止一个分类时,每条数据可能对应不止一个类别标签,例如一条新闻,可以被划分到多个板块。 无论是multiclass,还是mul
用户1733462
2018/06/01
3.3K0
127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP
说明:上一篇写完《当你输入URL到页面显示经历了什么--URL到IP地址》之后读了好几本关于网络的书(当然都是跳着读),发现期初想的太简单,还是遗漏了许多,后面等慢慢熟悉了整个网络连接之后再继续写。这次先插播一篇: 本地在做开发的时候肯定会起服务器,这就会牵扯到访问地址的问题:要么自定义域名;要么直接IP地址访问。可是这里的IP地址该用哪个?或者说 127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP 这些有何区别?下面查阅了一些资料做个分享: localhos
前端黑板报
2018/01/29
3.1K0
127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP
Hive SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY
在这篇文章中,我们主要来了解一下 SORT BY,ORDER BY,DISTRIBUTE BY 和 CLUSTER BY 在 Hive 中的表现。
smartsi
2021/12/16
1.9K0
Hive SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY
物理 CPU vs 逻辑 CPU vs 核心 vs 线程 vs Socket
当我们试着通过 Linux 命令 nproc 和 lscpu 了解一台计算机 CPU 级的架构和性能时,我们总会发现无法正确地理解相应的结果,因为我们会被好几个术语搞混淆:物理 CPU、逻辑 CPU、虚拟 CPU、核心、线程和 Socket 等等。如果我们又增加了超线程(不同于多线程),我们就会开始不知道计算机里面到底有多少核心,我们搞不明白为什么像 htop 这样的命令会在我们认为买的是一台单核计算机上返回拥有 8 个 CPU 的结果。这样的情况一片混乱。
IT大咖说
2019/09/04
2.4K0
物理 CPU vs 逻辑 CPU vs 核心 vs 线程 vs Socket
类视图 vs. 函数视图
基于类的视图(CBV)和基于函数的视图(FBV)到底有什么区别? 有什么优缺点? 本篇将会去探讨。 在阅读本篇之前,请记住一点「基于类的视图不会替代基于函数的视图」.
用户1416054
2018/12/26
2.5K0
Hive : SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY
在Apache Hive中,像SQL一样,您可以根据全局排序和分布要求决定对数据进行全局排序或局部排序。在这篇文章中,我们将了解Hive中的SORT BY,ORDER BY,DISTRIBUTE BY和CLUSTER BY的含义。 sort by sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只会保证每个reducer的输出有序,并不保证全局有序。sort by不同于order b
Spark学习技巧
2018/01/31
1.9K0
Hive : SORT BY vs ORDER BY vs DISTRIBUTE BY vs CLUSTER BY

相似问题

另一个'NSUInteger *‘(也称为'unsigned int *') vs 'NSUInteger’(也称为'unsigned int')

10

Cocoa:NSUInteger vs unsigned int当范围非常小时?

50

int vs NSNumber vs NSInteger

42

int、NSInteger和NSUInteger的区别

20

NSObject属性的NSNumber vs. NSInteger vs. int

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文