std:: abs, std:: labs, std:: llabs, std:: imaxabs
|
Определено в заголовке
<cstdlib>
|
||
|
Определено в заголовке
<cmath>
|
||
|
int
abs
(
int
num
)
;
|
(1) | (constexpr начиная с C++23) |
|
long
abs
(
long
num
)
;
|
(2) | (constexpr начиная с C++23) |
|
long
long
abs
(
long
long
num
)
;
|
(3) |
(начиная с C++11)
(constexpr начиная с C++23) |
|
Определено в заголовке
<cstdlib>
|
||
|
long
labs
(
long
num
)
;
|
(4) | (constexpr начиная с C++23) |
|
long
long
llabs
(
long
long
num
)
;
|
(5) |
(начиная с C++11)
(constexpr начиная с C++23) |
|
Определено в заголовке
<cinttypes>
|
||
|
std::
intmax_t
abs
(
std::
intmax_t
num
)
;
|
(6) |
(начиная с C++11)
(constexpr начиная с C++23) |
|
std::
intmax_t
imaxabs
(
std::
intmax_t
num
)
;
|
(7) |
(начиная с C++11)
(constexpr начиная с C++23) |
Вычисляет абсолютное значение целого числа num . Поведение не определено, если результат не может быть представлен типом возвращаемого значения.
Если
std::abs
вызывается с беззнаковым целочисленным аргументом, который не может быть преобразован в
int
с помощью
целочисленного повышения
, программа является некорректной.
|
Перегрузка
(6)
функции
|
(начиная с 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); // undefined behavior on 2's complement systems }
Вывод:
abs(+3) = +3 abs(-3) = +3
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2192 | C++98 |
перегрузки
std::abs
были
непоследовательно объявлены в двух заголовочных файлах |
объявлены эти перегрузки
в обоих заголовочных файлах |
Смотрите также
|
(C++11)
(C++11)
|
абсолютное значение числа с плавающей точкой (
|x|
)
(функция) |
|
возвращает модуль комплексного числа
(шаблон функции) |
|
|
применяет функцию
abs
к каждому элементу valarray
(шаблон функции) |
|
|
Документация C
для
abs
,
labs
,
llabs
|
|