绝对值函数

取绝对值函数在多个头文件均有定义

一、stdlib.h

_Check_return_ int       __cdecl abs   (_In_ int       _Number);
_Check_return_ long      __cdecl labs  (_In_ long      _Number);
_Check_return_ long long __cdecl llabs (_In_ long long _Number);
_Check_return_ __int64   __cdecl _abs64(_In_ __int64   _Number);

二、cstdlib

// <stdlib.h> has abs(long) and abs(long long)
_NODISCARD _Check_return_ inline double abs(_In_ double _Xx) noexcept /* strengthened */ {
    return _CSTD fabs(_Xx);
}

_NODISCARD _Check_return_ inline float abs(_In_ float _Xx) noexcept /* strengthened */ {
    return _CSTD fabsf(_Xx);
}

_NODISCARD _Check_return_ inline long double abs(_In_ long double _Xx) noexcept /* strengthened */ {
    return _CSTD fabsl(_Xx);
}

同时cstdlib中#include <stdlib.h>

三、corecrt_math.h

_Check_return_ int       __cdecl abs(_In_ int _X);
_Check_return_ long      __cdecl labs(_In_ long _X);
_Check_return_ long long __cdecl llabs(_In_ long long _X);
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double _X);
_Check_return_ __inline float __CRTDECL fabsf(_In_ float _X)
{
     return (float)fabs(_X);
}

abs的用法是针对整形变量的,double型变量取绝对值为fabs, float型变量取绝对值函数为fabsf。

四、C++中带.h与不带.h的头文件

带.h的头文件是标准化之前的C++头文件;不带.h的头文件是标准化之后的C++头文件。也就是说带 .h 的头文件是旧标准的,如果想用新的标准的头文件就不要带 .h。

但大多数编译器厂商依然提供旧版本头文件,以求向下兼容。

五、C++中前有c与前没有c的头文件

为了和C语言兼容,C++标准化过程中,原有C语言头文件标准化后,头文件名前带个c字母

posted @ 2022-11-20 11:33  ImreW  阅读(198)  评论(0编辑  收藏  举报