неявное преобразование сокращает 64 бит до 32 бит - PullRequest
2 голосов
/ 09 декабря 2010

Может кто-нибудь объяснить, почему это вызывает ошибку, указанную в заголовке?

CGFloat dx = fabs(lastPoint.x - currentPoint.x);

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

fabs() возвращает double (64-бит), но CGFloat определяется как float (32-бит). Как правило, это безвредно - лично я бы даже отключил предупреждение компилятора, так как выполнение вычислений с использованием значений double обычно как минимум так же быстро, как использование float значений.

2 голосов
/ 11 марта 2013

Лучший ответ - использовать #include <tgmath.h>. Этот заголовок определяет «адаптивные» функции, которые вызывают правильную функцию в зависимости от размера параметра.

С этим заголовком вы можете просто вызвать fabs, не получая этого предупреждения (и не беспокоясь о потере точности из-за использования неправильной функции).

...