ich den Unterschied zwischen abs
und fabs
auf Python geprüft hereWas ist der Unterschied zwischen `abs` vs` fabs` ist in (C++)
Wie ich es verstehen sind einige Unterschiede in Bezug auf die Geschwindigkeit und die übergebenen Typen, aber mein Frage im Zusammenhang mit nativem C++ auf VS
bezüglich der V.S. Ich habe versucht, die folgenden auf Visual Studio 2013 (v120)
:
float f1= abs(-9.2); // f = 9.2
float f2= fabs(-9); // Compile error [*]
So fabs(-9)
es gibt mir einen Compiler-Fehler, aber wenn ich versuchte, die folgendes zu tun:
double i = -9;
float f2= fabs(i); // This will work fine
Was ich aus dem ersten Code zu verstehen, dass es wird nicht kompiliert, weil fabs(-9)
ein Double benötigen, und der Compiler nicht -9 zu -9.0 konvertieren konnte, aber im zweiten Code wird der Compiler i=-9
in i=-9.0
zur Kompilierzeit umwandeln, so fabs(i)
wird gut funktionieren.
Eine bessere Erklärung?
Eine andere Sache, warum der Compiler fabs(-9)
nicht akzeptieren kann und den int-Wert automatisch so umwandeln, wie wir in C# haben?
[*]:
Error: more than one instance of overloaded function "fabs" matches the argument list:
function "fabs(double _X)"
function "fabs(float _X)"
function "fabs(long double _X)"
argument types are: (int)
Keine Compiler Fehler hier: http://coliru.stacked-crooked.com/a/80c5484bda892461 – NathanOliver