名前空間
変種
操作

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

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
abs(int)labsllabsimaxabs
(C++11)  
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)

(C++11)
(C++11)
べき乗関数
(C++11)
(C++11)
三角関数と
双曲線関数
(C++11)
(C++11)
(C++11)

誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最近接整数への浮動小数点数操作
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点数の操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類と比較
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
分類
(C++11)(C++11)(C++11)(C++11)(C++11)


 
ヘッダ <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::intmax_t のオーバーロード (6) は、std::intmax_t拡張整数型である場合にのみ、<cinttypes> で提供されます。

(C++11以降)

目次

[編集] パラメータ

num - 整数値

[編集] 戻り値

num の絶対値(すなわち |num|)。ただし、表現可能な場合。

[編集] 注記

2の補数システムでは、最も負の値の絶対値は範囲外です。たとえば、32ビット2の補数型 int では、INT_MIN-2147483648 ですが、結果となるはずの 2147483648 は、INT_MAX2147483647)よりも大きくなります。

[編集]

#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|)
(関数) [編集]
複素数の大きさを返す
(関数テンプレート) [編集]
valarrayの各要素に関数absを適用する
(function template) [編集]
C のドキュメントabs, labs, llabs
English 日本語 中文(简体) 中文(繁體)