неявное преобразование сокращает 64 бит до 32 бит
-
10-10-2019 - |
Вопрос
Может ли кто -нибудь объяснить, почему это вызывает ошибку, указанную в заголовке?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
Спасибо
Решение
fabs()
Возвращает а double
(64-бит), но CGFloat
определяется как float
(32-битный). Как правило, это безвредно - лично я бы даже отключил предупреждение компилятора, как вычисляющие расчеты с использованием double
Значения обычно как минимум так же быстро, как использование float
ценности.
Другие советы
Лучший ответ - использовать #include <tgmath.h>
. Анкет Этот заголовок определяет «адаптивные» функции, которые называют правильную функцию по любому размеру параметра.
С этим заголовком вы можете просто позвонить fabs
Не получая этого предупреждения (не беспокоясь о потере точности, вызванной использованием неправильной функции).