1

结果std::abs(0.5f)0因为浮点数没有过载。为什么?我正在使用 G++。

4

1 回答 1

6

使用 的重载时必须非常小心,std::abs因为一些标准库实现会在许多文件中乱扔重载,其中一些文件被隐式包含到其他文件中,例如<iostream>.

如果您#include <cmath>#include <cstdlib>(来自 C++17 的第二个)您之前,std::abs(0.5f)float重载将可用。如果不是这种情况,那么您的编译器/标准库实现中存在错误(在 g++ 的情况下不太可能)。

参考:https ://en.cppreference.com/w/cpp/numeric/math/fabs

于 2020-08-14T09:19:11.357 回答