std:: abs, std:: labs, std:: llabs, std:: imaxabs
| 
           定义于头文件
            
            
             <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>
            
            | ||
| 
           
            
             
              std::
              
               intmax_t
              
             
            
            abs
            
             (
            
            
             
              std::
              
               intmax_t
              
             
            
            num
            
             )
            
            
             ;
            
           
           | (6) | (自 C++11 起) (自 C++23 起为 constexpr) | 
| 
           
            
             
              std::
              
               intmax_t
              
             
            
            imaxabs
            
             (
            
            
             
              std::
              
               intmax_t
              
             
            
            num
            
             )
            
            
             ;
            
           
           | (7) | (自 C++11 起) (自 C++23 起为 constexpr) | 
计算整数 num 的绝对值。若结果无法用返回类型表示,则行为未定义。
       如果使用无法通过
       
        整型提升
       
       转换为
       
        
         int
        
       
       的无符号整型实参调用
       
        std::abs
       
       ,则程序非良构。
      
| 
          当且仅当
          
           
            std::intmax_t
           
          
          为
          
           扩展整数类型
          
          时,
           | (C++11 起) | 
| 目录 | 
参数
| num | - | 整数值 | 
返回值
       
        
         num
        
       
       的绝对值(即
       
        |num|
       
       ),若其可被表示。
      
注释
在 二进制补码 系统中,最小负值的绝对值超出表示范围,例如对于32位二进制补码类型 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); // 在二进制补码系统上的未定义行为 }
输出:
abs(+3) = +3 abs(-3) = +3
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 2192 | C++98 | 
          std::abs
         的重载版本在两个头文件中声明不一致 | 在两个头文件中 均声明这些重载版本 | 
参见
| 
           
            
            
            
            
            
             
              (C++11)
             
            
            
             
              (C++11)
             
            
           
           | 浮点值的绝对值 (
         
         
          |x|
         
         ) (函数) | 
| 返回复数的模 (函数模板) | |
| 对 valarray 的每个元素应用函数
         
          
           abs (函数模板) | |
| 
          
           
            C 文档
           
          
          关于
          
           
            abs
           
           ,
           
            labs
           
           ,
           
            llabs
           
          
          | |