Namespaces
Variants

std:: abs, std:: labs, std:: llabs, std:: imaxabs

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
ヘッダー <cstdlib> で定義
ヘッダー <cmath> で定義
int abs ( int num ) ;
(1) (C++23以降 constexpr)
long abs ( long num ) ;
(2) (C++23以降 constexpr)
long long abs ( long long num ) ;
(3) (C++11以降)
(C++23以降 constexpr)
ヘッダー <cstdlib> で定義
long labs ( long num ) ;
(4) (C++23以降 constexpr)
long long llabs ( long long num ) ;
(5) (C++11以降)
(C++23以降 constexpr)
ヘッダー <cinttypes> で定義
(6) (C++11以降)
(C++23以降 constexpr)
(7) (C++11以降)
(C++23以降 constexpr)

整数値 num の絶対値を計算します。戻り値の型で表現できない場合の動作は未定義です。

std::abs が、 整数プロモーション によって int に変換できない符号なし整数型の引数で呼び出された場合、プログラムは不適格となります。

std::abs (6) オーバーロードは、 std::intmax_t に対して、 <cinttypes> で提供される。ただし、これは std::intmax_t 拡張整数型 である場合に限る。

(C++11以降)

目次

パラメータ

num - 整数値

戻り値

num の絶対値(すなわち |num| )が表現可能な場合の値。

注記

2の補数 システム において、最も負の値の絶対値は範囲外となります。例えば、32ビット2の補数型 int の場合、 INT_MIN - 2147483648 ですが、結果となるべき値 2147483648 INT_MAX である 2147483647 を超えています。

#include <climits>
#include <cstdlib>
#include <iostream>
int main()
{
    std::cout << std::showpos
              << "abs(+3) = " << std::abs(3) << '\n'
              << "abs(-3) = " << std::abs(-3) << '\n';
//  std::cout << std::abs(INT_MIN); // undefined behavior on 2's complement systems
}

出力:

abs(+3) = +3
abs(-3) = +3

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2192 C++98 std::abs のオーバーロードが
2つのヘッダーで矛盾して宣言されていた
これらのオーバーロードを
両方のヘッダーで宣言する

関連項目

浮動小数点値の絶対値 ( |x| )
(関数)
複素数の絶対値を返す
(関数テンプレート)
関数 abs をvalarrayの各要素に適用する
(関数テンプレート)
Cドキュメント for abs , labs , llabs