Gor*_*dem 1 c++ floating-point absolute-value c++-standard-library
结果std::abs(0.5f)
是0
因为浮点数没有过载。为什么?我正在使用 G++。
使用 的重载时必须非常小心,std::abs
因为某些标准库实现会在许多文件中乱放重载,其中一些文件被隐式包含在其他文件中,例如<iostream>
.
如果您#include <cmath>
或#include <cstdlib>
(C++17 中的第二个)在您之前,std::abs(0.5f)
则float
重载将可用。如果不是这种情况,则说明您的编译器/标准库实现中存在错误(在 g++ 的情况下不太可能)。
参考:https : //en.cppreference.com/w/cpp/numeric/math/fabs