ios - 在调试和发布时在 iOS 上的转换不一致
问题描述
对于我的游戏,我将角度存储在一个简短的位置(因此它们会自动为我换行),这使得 90 度 +16384 和 270 度 -16384 等......但是,如果你在 iOS 上运行此代码:
int iDegrees;
short iAngle;
iDegrees = 270;
iAngle = (float)(iDegrees) * 65536.0f / 360.0f;
在模拟器和真实设备上的调试模式下,iAngle 是-16384,正如我所料。但在模拟器上的发布模式下,iAngle 为 255,而在设备上为 0。
这是 Xcode 中生成代码的错误吗???
更新:
我发现如果你将 float 转换为 int(然后编译器将其转换为 short),它会给出我期望的结果:
iAngle = (int)((float)(iDegrees) * 65536.0f / 360.0f);
似乎 iOS 不喜欢将溢出的浮点数转换为短路 - 但仅限于发布模式!
解决方案
推荐阅读
- jquery - 如何在 JQuery 中读取我复杂的 JSON Stringify 数据?
- jquery - ASP.net MVC Core Razor 页面和 Ajax JQuery
- c# - 根据文化更改 WPF 中的货币符号/日期时间格式
- c - sh 的原因:系统()命令未找到 1 个文件错误?在 StackOverflow 中尝试了可能的解决方案(如下所列)但失败了
- java - 当我尝试关闭 MySQL 连接时出错
- kubernetes - Cluster Autoscaler 不使用 nodeSelector 扩展
- jquery - jQuery 通过多个键过滤数据数组
- python - 如何使用 MySQL 使用经度和纬度列找到行之间的距离?
- c# - 返回菜单选择的功能;项目的切换语句
- amazon-redshift - 获取营业时间内两个日期之间的差异(Redshift)