【发布时间】:2016-02-01 17:42:37
【问题描述】:
如果我在 Xcode 的调试控制台中输入
(lldb) p (float)fabsf(-5.0f)
(float) $22 = 0
(lldb) p (double)fabsf(-5.0f)
(double) $23 = 5
第一个结果转换为浮动(没有转换,p 命令无法识别fabsf 返回类型)无论参数如何都是错误的。
但在库头中,fabs 的返回类型显然是一个浮点数。有人可以解释一下吗?
ios9.2: 数学.h
...
extern float fabsf(float);
extern double fabs(double);
extern long double fabsl(long double);
...
是否有一些我不知道的 lldb 机制或问题,或者真的是语言实现问题(猜不是......)?
【问题讨论】:
-
我无法重现你的结果,在模拟器上运行。
-
我确实在 iPhone 6s、Xcode 7.2 上复制过。等待答复))
-
可直接在 OS X 下的 lldb 中重现。其他
float返回函数(例如fmaxf)和强制转换也会发生同样的情况。我建议一个错误,您应该向 Apple (bugreport.apple.com) 报告 -
我在 apple bugtracker 上填写了一张票,但他们的速度比他们的应用审查流程慢。这是很多。
标签: objective-c