首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUInteger在反向循环混乱?

NSUInteger在反向循环混乱?
EN

Stack Overflow用户
提问于 2014-04-11 14:29:18
回答 2查看 96关注 0票数 0

我想知道是否有人能解释一些事情,我设置了一个循环,其中我想从10倒计时到0:

代码语言:javascript
复制
for(NSUInteger index = 10; index >= 0; index--) {
    NSLog(@"INDEX: %ld", (long)index);
}

这个循环永远运行,它不停留在0,而是一直进入负数。当我注意到这一点时,我将代码更改为:

代码语言:javascript
复制
for(NSInteger index = 10; index >= 0; index--) {
    NSLog(@"INDEX: %ld", (long)index);
}

上面的方法很好,但是我很好奇,为什么第一个例子不能工作,因为生成的数字都是无符号整数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-11 14:33:59

一个没有符号的类型不能“一直进入负数”。迭代后,当index =0时,index-变为0xFFFFFFF,该值仍然大于零。很容易犯错误,我自己做过。

静态分析器实际上会警告您这一点(“条件索引>= 0始终为真”之类)。我强烈建议将其设置为在调试版本上自动运行。

票数 2
EN

Stack Overflow用户

发布于 2014-04-11 14:36:51

请注意,NSUInteger始终是>= 0,因此,循环条件将始终为真。

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

https://stackoverflow.com/questions/23015452

复制
相关文章

相似问题

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