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> 헤더에서 제공됩니다.

(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 의 오버로드들이
두 헤더에서 불일치하게 선언됨
이러한 오버로드들을
두 헤더 모두에서 선언

참고 항목

부동 소수점 값의 절댓값 ( |x| )
(함수)
복소수의 크기를 반환합니다
(함수 템플릿)
함수 abs 를 valarray의 각 요소에 적용합니다
(함수 템플릿)
C 문서 for abs , labs , llabs