implizite Konvertierung verkürzt 64 Bit auf 32 Bit
-
10-10-2019 - |
Frage
Kann jemand erklären, warum dies bewirkt, dass der Fehler in der Überschrift angegeben?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
Danke
Lösung
fabs()
gibt eine double
(64-Bit), aber CGFloat
ist definiert als ein float
(32-Bit) zu sein. Es ist in der Regel harmlos - ich persönlich würde sogar die Compiler Warnung abzuschalten, als Berechnungen mit double
Wert Durchführung ist in der Regel mindestens so schnell wie float
Werten mit
Andere Tipps
Eine bessere Antwort ist #include <tgmath.h>
zu verwenden. Dass die Header definiert „adaptive“ Funktionen, die die korrekte Funktion auf welchem ??Parameter Größe nennen.
Mit diesem Header enthalten, können Sie einfach fabs
aufrufen, ohne diese Warnung zu bekommen (noch sich Gedanken über Genauigkeitsverlust durch die Verwendung der falschen Funktion verursacht werden).