首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS : NSInteger和NSUInteger比较

iOS : NSInteger和NSUInteger比较
EN

Stack Overflow用户
提问于 2014-08-25 06:50:28
回答 1查看 8.8K关注 0票数 2

惊喜吧!

我有这样一个变量,

代码语言:javascript
复制
NSInteger index = 0;

我将其与一个子视图计数(返回NSUInteger)进行比较,

代码语言:javascript
复制
if((index-1) <= [[currentmonth subviews] count]) 
{
    NSLog(@"true");
}
else
{
    NSLog(@"false");
}

这总是给出假的.

但如果我愿意这样做,

代码语言:javascript
复制
if ((index-1) <= 42) {
    NSLog(@"true");
} else {
    NSLog(@"false");
}

这总是给出真实的.

我觉得,这是因为我们不能将NSIntegerNSUInteger进行比较,对吗?

当我有了一个基于这个逻辑的工作解决方案时,我发现了这个问题。,但这完全不是真的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 06:54:15

我找到这个了,NSUInteger对NSInteger,int对无签名,以及类似的情况

这个答案给出了很好的解释!

在处理NSUInteger和NSInteger时,还应该注意整数转换规则:

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

代码语言:javascript
复制
NSInteger si = -1;
NSUInteger ui = 1;
printf("%d\n", si < ui);

原因是si变量被隐式转换为无符号int!

有关这些“问题”的深入讨论,以及如何解决这些问题,请参见CERT安全编码站点

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

https://stackoverflow.com/questions/25480412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档