conversion implicite raccourcit 64 bits à 32 bits
-
10-10-2019 - |
Question
Quelqu'un peut-il expliquer pourquoi cela provoque l'erreur indiqué dans le titre?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
Merci
La solution
fabs()
renvoie un double
(64 bits), mais CGFloat
est défini comme étant un float
(32 bits). Il est généralement inoffensif - Personnellement, je même désactiver l'avertissement du compilateur, comme effectuer des calculs en utilisant des valeurs de double
est généralement au moins aussi rapide que les valeurs de float
Autres conseils
Une meilleure réponse est d'utiliser #include <tgmath.h>
. Qui définit les fonctions d'en-tête de « adaptatifs » qui appellent la fonction correcte sur la taille selon des paramètres.
Avec cet en-tête inclus, vous pouvez simplement appeler fabs
sans obtenir cet avertissement (ni se soucier de la perte de précision causée par l'utilisation de la mauvaise fonction).