为什么 m_array.count 在 for 循环中用作条件时会失败? [复制]

2024-04-03

这有效:

int i, start, end;

start = m_cardArr.count - 1;
end = m_cardArr.count - 4;
NSLog(@"%i %i", m_cardArr.count - 1, m_cardArr.count - 4);
for(i = start; i > end; i--)
{
    LabyrinthCard* labyCard = (LabyrinthCard*)[m_cardArr objectAtIndex:i];
    if(labyCard.m_type != cardType || labyCard.m_usedForDoor)
    {
        return false;
    }
}

这根本不进入 for 循环:

int i;

NSLog(@"%i %i", m_cardArr.count - 1, m_cardArr.count - 4);
for(i = m_cardArr.count - 1; i > m_cardArr.count - 4; i--)
{
    LabyrinthCard* labyCard = (LabyrinthCard*)[m_cardArr objectAtIndex:i];
    if(labyCard.m_type != cardType || labyCard.m_usedForDoor)
    {
        return false;
    }
}

我不会更改内部数组的大小,因此使用 m_cardArr.count 作为条件应该可以。在这两种情况下,当数组中有 3 个元素时,NSLog 都会打印 2、-1。

我不明白我在这里缺少什么。


这是因为count属性是类型NSUInteger,即无符号数。当你减去4从它开始,结果变成负数,它被解释为一个非常大的正数。

当您将该结果分配给int,你再次将其重新解释为否定,从而解决问题。

解决这个问题的最佳方法是移动-4到表达式的另一边,将符号更改为+, 像这样:

for(i = m_cardArr.count - 1; i+4 > m_cardArr.count; i--) {
    ...
}

表达式背后的逻辑将保持不变,但您将不再看到减法引起的有符号/无符号副作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 m_array.count 在 for 循环中用作条件时会失败? [复制] 的相关文章

  • Xcode 6 Launchscreen.xib 具有适用于 iPad 横向和纵​​向的不同资源

    使用 Xcode 6 中引入的 LaunchScreen 我可以定义用于 iPad 横向和纵 向的不同资源吗 由于两个 iPad 方向的特征是相同的 遗憾的是 顺便说一句 我无法区分两者 这是否意味着 要么对 iPad 横向和纵 向使用相同
  • 如何在 XCode 中将 C++ 与 Objective-C 结合使用

    我想在 Objective C 中使用 重用 C 对象 我有一个包含类定义的 hello h 和用于类实现的 hello cpp class Hello int getX 我在 Objective C 函数中使用这个类 include he
  • UICollectionView PerformBatchUpdates 同时插入、删除、移动

    我正在尝试使用UICollectionView s performBatchUpdates方法来执行过滤操作 某种 并且在块内我插入单元格 移动单元格和删除单元格 我得到了一些奇怪的结果 所以我想知道这种行为是否真的受到支持 我认为索引变得
  • Xcode 5:单元测试未运行

    我创建了一些测试用例 它们都通过了 那是因为它们没有被运行 从 Xcode 中 我得到 Test Suite All tests started at Test Suite All tests finished at Executed 0
  • 在 Xcode 4.2 中启用崩溃日志符号

    我使用的是 Xcode 4 2 我的崩溃日志没有被符号化 如何在 Xcode 4 2 中启用此功能 请浏览苹果的文档 http developer apple com library ios technotes tn2151 index h
  • 有没有办法直观地看到精灵套件的 SKPhysicsbody 边界线?

    我在用bodyWithPolygonFromPath定义物理体的体积 我使用http dazchong com spritekit http dazchong com spritekit 获取所需的路径 但路径似乎不正确 我希望查看物理体路
  • 有 Objective-C Web 框架吗?

    有 Objective C Web 框架吗 我发现的唯一框架是 frothkit 我主要寻找一种在 Objective C 中编写 RESTful json Web 服务的方法 GNUStepWeb http wiki gnustep or
  • GameCenter 邀请处理程序

    尝试实现多人游戏 使用来自的样本游戏中心 发送和接收数据 https stackoverflow com questions 4574119 game center sending and receiving data 一切看起来都还好 但
  • 如何读取 IBAction 中的 UITextField 值。我正在以编程方式创建 UITextField

    我怎样才能阅读UITextField值在IBAction 我正在创造UITextField以编程方式 所以我无法设置 property and synthesize使用 Xcode 要生成的代码UITextField如下 for i 0 i
  • 如何使用break语句停止内部和外部循环[重复]

    这个问题在这里已经有答案了 我使用的代码非常简单break内部循环 for int it 0 it lt 5 it for int it2 0 it2 lt 5 it2 if it2 2 break break here not it2 b
  • 预填充 UICollectionView 单元重用队列

    问题 我有一个应用程序 只有一个UICollectionView我第一次滚动它时很卡顿 我已将来源范围缩小到正在创建新单元格 2 的事实 使用initWithFrame 因为周围没有可以重复使用的细胞 初始滚动后 重用队列不为空 单元格可以
  • 如何让 iPhone 屏幕变暗

    我的 iPhone 屏幕上有一个刷新按钮 可以刷新当前视图中的表格 屏幕刷新得很漂亮 但是有没有办法让屏幕变暗 然后在表格刷新后再次变亮 您可以在要调暗的视图上放置一个带有黑色背景的非不透明视图 默认情况下 其 alpha 值为 0 因此是
  • 在后台线程上搜索

    我试图在 iPhone 应用程序中搜索数千个对象 但是搜索严重滞后 每次击键后 UI 都会冻结 1 2 秒 为了防止这种情况 我必须在后台线程上执行搜索 我想知道是否有人有一些在后台线程上搜索的提示 我读了一点NSOperation并在网上
  • Swift try inside Objective-C 块

    我需要创建一个函数foo它接受一个抛出闭包作为参数 我可以使用 Swift 或 ObjC 来实现它 但我需要能够从两者中调用它 像这样 Swift func bar throws func foo block throws gt void
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • 使用 JSONKit 解析 JSON 文件

    我正在构建一个音叉应用程序 货叉应允许最多 12 个预设节距 此外 我希望允许用户选择一个主题 每个主题都会加载一组预设 不必使用所有预设 我的配置文件看起来像这样 theme A3 comment An octave below conc
  • 如何使用 didMoveToView 作为 initWithSize ?

    我将 Xcode 更新到版本 6 从那时起 我就无法使用以前在 Xcode 5 中使用 Objective C 编写的代码了 有一些新文件 GameScene h 和 GameScene m 以及 GameScene sks 而不是 MyS
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 将 NSFetchedResultsController 添加到项目后出现问题

    我设置 CoreData 时没有NSFetchedResultsController一切都保存得很好 切换到之后NSFetchedResultsController 我在尝试保存图像时遇到奇怪的错误 这是我用来保存图像的代码 void sa
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS

随机推荐

  • Gephi 中的平行边是什么?导入边列表时如何处理它们?

    当我导入 gexf 文件时 它会标记一堆平行边 我不知道什么是平行边以及为什么我的图表存在问题 我正在尝试创建一个动态 gephi 图 如果一对两个节点之间有多条边 这些边彼此平行 因此它们是平行边 Gephi 中无法表示平行边 因此 Ge
  • Github 错误:找不到存储库(是的,还有另一个)

    我在这里搜索并阅读了大多数类似的问题 但似乎没有一个与我的相同 我在 Github 上有一个私人仓库 一个小时前我可以很好地推送 现在 我收到错误 未找到存储库消息 我的 ssh config 中有以下内容 Host github Host
  • GitHub:我为什么要分叉?

    我知道分叉是在服务器端克隆存储库 但我不明白为什么我要这么做 为什么不将原始存储库克隆到我的计算机 添加我的代码 而不是将新分支推送到 GitHub 并发出拉取请求 我知道分叉是在服务器端克隆存储库 差不多是这样吧 在 GitHub 上 分
  • JQuery 将变量从 href 传递到 load()

    我试图在 JQuery 中将 href id 传递给 load 我可以从警报中看到返回的 id 960 所以我知道 id 值已经过去了 我只是不知道如何附加加载 url refreshme add id 是重要的部分 我用它来刷新数据库拉取
  • 检查具有关联的对象

    我有两个模型 其中 A has many B 如果我加载 A 包括关联的 B a A find first include bs a inspect只显示a的属性 gt a 我能怎么做a inspect这样它就会显示所有关联的a bs 默认
  • Android 旋转位图而不进行复制

    有没有办法旋转位图而不复制它 或者也许是保存位图的图像视图 现在我有类似的东西 Bitmap bm BitmapFactory decodeFile get the orientation Matrix m new Matrix m pos
  • Linux 内核的静态调用图生成

    我正在寻找一个工具来静态生成 Linux 内核的调用图 对于给定的内核配置 生成的调用图应该是 完整的 即包含所有调用 包括潜在的间接调用 我们可以假设在 Linux 内核的情况下只能通过使用函数指针来完成调用 例如 这可以通过分析函数指针
  • pytest。使用堆叠参数化装饰器时定义预期结果的最佳方法?

    我有两个类似的测试用例 每个都有超过 100 行代码 这些代码为测试创建辅助对象 这些行非常相似 事实上 测试设置之间只有 2 行不同 我不想删除这些代码重复 我认为多个参数化可能会帮助我完成这项任务 使用多个参数化 我可以将设置组合起来
  • PHP会话文件权限

    我有文件index php
  • WebLogic 和 OSGi

    有没有办法在 Weblogic 应用程序服务器中运行 OSGi 容器 我知道它可以与 JBoss Glassfish 配合使用 并且可以将 Equinox servlet 桥添加到您的 OSGi 项目中 桥的实现太旧了 但我想要类似 JBo
  • npm install packagename --save-dev 不更新 package.json

    有没有简单或微妙的原因package json运行 save dev 后不会更新吗 这是我的命令 npm install modulename save dev 从项目的根目录运行 命令成功 新模块按预期显示在 node modules 目
  • 如何增加TabLayout中选项卡的图标大小

    我正在尝试增加应用程序中选项卡的图标大小 图标大小是固定的 尝试了很多方法 但没有任何效果 最后尝试了以下方法 但大小没有改变 如果有人能告诉我正确的方法 我会很高兴 提前致谢 这是我的代码 Toolbar toolbar Toolbar
  • @TransactionalEventListener 不起作用,因为 @EventListener 对于相同上下文就像魅力一样工作

    我正在从事 Spring Boot 应用程序的事件驱动设计 该代码由以下文件组成 Spring boot ApplicationEvent 文件 即 MyBusinessEvent java Data AllArgsConstructor
  • 有谁知道如何在 Rails 2.3 中正确处理用户时区?

    我们正在构建一个 Rails 应用程序 需要在多个时区显示日期 更重要的是计算日期 谁能告诉我如何在 Rails 2 3 5 或 8 中使用用户时区 我见过的最具包容性的文章详细介绍了用户时区的工作原理 如下 http wiki rubyo
  • 是否可以编辑 JWT 令牌的过期时间?

    我是智威汤逊世界的新手 很高兴在这里获得一些帮助 我有一个应用程序可以与这个出色的解决方案完美配合 但在用户登录我的应用程序时发现延长令牌过期的一个小问题 换句话说 我想在用户每次使用他以前的 JWT 访问我的应用程序时更新过期时间 有没有
  • 通过xmpp在android中传输文件?

    我只是想通过 xmpp 传输文件 我正在使用 asmack lib 我在下面遇到异常 E AndroidRuntime 332 FATAL EXCEPTION main E AndroidRuntime 332 java lang Null
  • useEffect props 回调函数导致无限循环

    我有一个与此非常相似的问题 如何修复 React Hook useEffect 中缺少的依赖项 https stackoverflow com questions 55840294 how do i fix missing dependen
  • 将第二个类添加到 RowDataBound 中的 gridview 行

    我希望以编程方式向 GridView 添加一个附加类 我知道我可以使用以下代码来做到这一点 public void RowDataBound object sender GridViewRowEventArgs e DataRow row
  • 使用 Metal 进行屏幕撕裂和相机捕捉

    为了避免同时从 gpu 和 cpu 写入常量缓冲区 Apple 建议在信号量的帮助下使用三重缓冲系统 以防止 cpu 领先于 gpu 太多 这很好 并在现阶段至少有三个金属视频 然而 当常量资源是 MTLTexture 并且 AVCaptu
  • 为什么 m_array.count 在 for 循环中用作条件时会失败? [复制]

    这个问题在这里已经有答案了 这有效 int i start end start m cardArr count 1 end m cardArr count 4 NSLog i i m cardArr count 1 m cardArr co