名稱空間
變體
操作

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

來自 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擴充套件整型時,才在 <cinttypes> 中提供 std::abs 的過載 (6),用於 std::intmax_t

(C++11 起)

目錄

[編輯] 引數

num - 整數值

[編輯] 返回值

如果 num 的絕對值可表示,則返回其絕對值(即 |num|)。

[編輯] 注意

2 的補碼系統中,最負值的絕對值超出範圍,例如對於 32 位 2 的補碼型別 intINT_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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2192 C++98 std::abs 的過載
在兩個標頭檔案中宣告不一致
在兩個標頭檔案中
聲明瞭這些過載

[編輯] 參閱

浮點值的絕對值(|x|
(函式) [編輯]
返回複數的模
(函式模板) [編輯]
將函式 abs 應用於 valarray 的每個元素
(函式模板) [編輯]
C 文件,關於 abslabsllabs