conversión implícita acorta 64 bits a 32 bits
-
10-10-2019 - |
Pregunta
Puede alguien explicar por qué esto hace que el error indicado en el título?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
Gracias
Solución
fabs()
devuelve un double
(64-bit), pero CGFloat
se define para ser un float
(32 bits). Por lo general es inofensiva - Yo personalmente incluso desactivar la advertencia del compilador, como la realización de los cálculos utilizando valores double
es típicamente al menos lo más rápido que el uso de valores float
Otros consejos
Una mejor respuesta es utilizar #include <tgmath.h>
. Que define las cabeceras de las funciones de "adaptación" que llaman a la función correcta en el que sea el tamaño de parámetro.
Con ese encabezado incluido, sólo tiene que llamar fabs
sin conseguir que la alerta (ni preocuparse por la pérdida de precisión causada por el uso de la función equivocada).