Die Funktionen std::fmax
und std::fmin
vom <cmath>
Header (oder fmax
und fmin
von <math.h>
) sind ein Merkmal C 11 ++ und zusammen mit vielen anderen neuen mathematischen Funktionen ein, dass Visual Studio 2010 noch nicht unterstützt (weder tut). Für Portabilität ist es ratsam, sie durch std::min
und std::max
von <algorithm>
zu ersetzen.
Der eigentliche Unterschied ist, dass fmin
und fmax
sind mathematische Funktionen auf Arbeits Gleitkommazahlen und Ursprung von C99
(und könnte intrinsisch durch tatsächliche spezielle CPU-Anweisungen, wo möglich umgesetzt werden), während min
und max
sind die allgemeinen Algorithmen verwendbar auf jedem Typ unterstützt <
(und sind wahrscheinlich nur eine einfache (b<a) ? b : a
anstelle einer Fließkomma-Anweisung, obwohl eine Implementierung könnte sogar das mit einer Spezialisierung von min
und max
tun, aber ich bezweifle das).
Sie verhalten sich auch leicht unterschiedlich für spezielle Gleitkomma Argumente. Obwohl nicht genau angegeben ist, wie min
und max
auf NaN
reagieren, denke ich (obwohl aus der obigen Definition immer der 1. Operand zurückgegeben werden sollte), fmin
und fmax
sind eindeutig angegeben, um immer das andere (nicht NaN
) Argument zurückzugeben wenn man NaN
ist, wenn die Implementierung IEEE 754 konform ist (was jede moderne PC-Implementierung normalerweise ist).
mögliche Duplikate von [Verwendung von Min- und Max-Funktionen in C++] (http://stackoverflow.com/questions/1632145/use-of-min-and-max-functions-in-c) – stijn
Ich bin mir sicher, Ihre Programm war ein bisschen länger als das ('# include'?) –
Nun, einer stammt aus C99, der andere aus C++ 98 ... – PlasmaHH