我想知道在什么情况下我会使用fabs(fabsf来自 cmath/math.h)?
或者解释一下差异,因为它看起来就像一个只是调用另一个。
我在 math.h 中的定义是
_Check_return_ inline float fabs(_In_ float _Xx) _NOEXCEPT
_Check_return_ __inline float __CRTDECL fabsf(_In_ float _X)
Run Code Online (Sandbox Code Playgroud)
何时使用
fabsf而不是fabs
在 C++ 中,几乎没有理由使用fabsf. std::abs与浮点类型一起使用。std::fabs当您希望将整数的绝对值转换为 时可能有用double,但这可能是相当小众的用例。
如果您改为编写 C,那么它几乎同样简单:fabsf当您有float, 以及fabs当您有double. 这同样适用于带f后缀的其他标准数学函数。
我在 math.h 中的定义是
Run Code Online (Sandbox Code Playgroud)_Check_return_ inline float fabs(_In_ float _Xx) _NOEXCEPT
C++ 标准库指定了std::fabs. 其中一个需要一个float. 如果缺少其他重载,则您的标准库不符合标准。
C 标准库指定double fabs(double). 如果引用的声明适用于 C,则您的标准库不符合标准。