首页 > 解决方案 > 在调试和发布时在 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 不喜欢将溢出的浮点数转换为短路 - 但仅限于发布模式!

标签: iosxcodecasting

解决方案


推荐阅读