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 의 절댓값을 계산합니다. 결과가 반환 타입으로 표현될 수 없는 경우의 동작은 정의되지 않습니다.
만약
std::abs
가
정수 승격
에 의해
int
로 변환될 수 없는 부호 없는 정수 인자로 호출되면, 프로그램은 형식에 맞지 않습니다.
|
|
(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
의 오버로드들이
두 헤더에서 불일치하게 선언됨 |
이러한 오버로드들을
두 헤더 모두에서 선언 |
참고 항목
|
(C++11)
(C++11)
|
부동 소수점 값의 절댓값 (
|x|
)
(함수) |
|
복소수의 크기를 반환합니다
(함수 템플릿) |
|
|
함수
abs
를 valarray의 각 요소에 적용합니다
(함수 템플릿) |
|
|
C 문서
for
abs
,
labs
,
llabs
|
|