隐性转换缩短了64位至32位
-
10-10-2019 - |
题
有人可以解释为什么这会导致标题中所述的错误?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
谢谢
解决方案
fabs()
返回a double
(64位),但 CGFloat
被定义为 float
(32位)。这通常是无害的 - 我个人甚至会禁用编译器警告,因为使用 double
值通常是 至少 就像使用一样快 float
值。
其他提示
一个更好的答案是使用 #include <tgmath.h>
. 。该标头定义“自适应”函数,这些函数可在任何参数大小上调用正确的函数。
包含该标头,您可以简单地致电 fabs
没有得到警告(也不担心由于使用错误功能而导致的精确度丧失)。
不隶属于 StackOverflow