• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <cstdlib>

    std::abs

    namespace std {
      int
        abs(int j);         // (1) C++03
      constexpr int
        abs(int j);         // (1) C++23
    
      long
        int abs(long j);    // (2) C++03
      constexpr long
        int abs(long j);    // (2) C++23
    
      long long
        abs(long long j);   // (3) C++11
      constexpr long long
        abs(long long j);   // (3) C++23
    
      float
        abs(float j);               // (4) C++03からC++20まで
      double
        abs(double j);              // (5) C++03からC++20まで
      long double
        abs(long double j);         // (6) C++03からC++20まで
    
      floating-point-type
        abs(floating-point-type j); // (7) C++03からC++20まで
    
      long
        labs(long j);       // (8) C++03
      constexpr long
        labs(long j);       // (8) C++23
    
      long long
        llabs(long long j); // (9) C++11
      constexpr long long
        llabs(long long j); // (9) C++23
    }
    

    概要

    絶対値を求める。abs は absolute value(絶対値)の略。

    • (1) : intに対するオーバーロード
    • (2) : longに対するオーバーロード
    • (3) : long longに対するオーバーロード
    • (4) : floatに対するオーバーロード
    • (5) : doubleに対するオーバーロード
    • (6) : long doubleに対するオーバーロード
    • (7) : 浮動小数点数型に対するオーバーロード
    • (8) : long規定
    • (9) : long long規定

    戻り値

    引数 j の絶対値を返す。

    • (4),(5),(6),(7) : j±∞ だった場合 +∞ を返す。

    備考

    • パラメータの型Xにおいてis_unsigned_v<X>trueであり、Xが整数昇格によってintに変換できない場合、プログラムは不適格となる
      • Cとの互換性のため、intに昇格できる符号なし整数型は許可される
    • C++23では、(4)、(5)、(6)が(7)に統合され、拡張浮動小数点数型を含む浮動小数点数型へのオーバーロードとして定義された

    #include <iostream>
    #include <cstdlib>
    
    int main()
    {
      int x = std::abs(-1);
      std::cout << x << std::endl;
    }
    

    出力

    1
    

    備考

    特定の環境では、早期に constexpr 対応されている場合がある:

    • GCC 4.6.1 以上

    参照