Je suppose que les abdominaux et les artificiels se comportent différemment lors de l’utilisation de math.h. Mais lorsque j'utilise uniquement cmath et std :: abs, dois-je utiliser std :: fabs? ou des fabs? Ou n'est-ce pas défini?
Réponses
Trop de publicités? En C ++, il est toujours suffisant d'utiliser std::abs
; il est surchargé pour tous les types numériques.
En C, abs
ne fonctionne que sur les entiers et vous avez besoin de fabs
pour les valeurs à virgule flottante. Celles-ci sont disponibles en C ++ (avec toute la bibliothèque C), mais il n'est pas nécessaire de les utiliser.
C'est toujours bon à utiliser fabs
pour double
et float
arguments. Je préfère cela, car il garantit que si j'ai accidentellement bande de l' std::
off l' abs
, que le comportement reste le même pour la virgule flottante entrées.
Je viens de passer 10 minutes de débogage ce problème, en raison de ma propre erreur d'utiliser des abs
au lieu de std::abs
. Je suppose que l' using namespace std;
permettrait de déduire std::abs
, mais il n'a pas, et a plutôt été à l'aide de la version C.
De toute façon, je crois qu'il est bon d'utiliser fabs
au lieu de abs
pour virgule flottante entrées comme un moyen de documenter votre intention clairement.