Пространства имён
Варианты
Действия

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)
 
Определено в заголовочном файле <cstdlib>
Определено в заголовочном файле <cmath>
int       abs(int num );
(1) (constexpr начиная с C++23)
long      abs(long num );
(2) (constexpr начиная с C++23)
longlong abs(longlong num );
(3) (начиная с C++11)
(constexpr начиная с C++23)
Определено в заголовочном файле <cstdlib>
long       labs(long num );
(4) (constexpr since C++23)
longlong llabs(longlong num );
(5) (начиная с C++11)
(constexpr начиная с C++23)
Определено в заголовочном файле <cinttypes>
(6) (начиная с C++11)
(constexpr since C++23)
(7) (начиная с C++11)
(constexpr since C++23)

Вычисляет абсолютное значение целого числа num. Поведение не определено, если результат не может быть представлен возвращаемым типом.

Если std::abs вызывается с целочисленным аргументом без знака, который нельзя преобразовать в int путём целочисленного преобразования, программа некорректна.

Перегрузка (6)std::abs для std::intmax_t предоставляется в <cinttypes> тогда и только тогда, когда std::intmax_t это расширенный целочисленный тип.

(начиная с C++11)

Содержание

[править]Параметры

num целочисленное значение

[править]Возвращаемое значение

Абсолютное значение num (т.е. |num|), если оно представимо.

[править]Примечание

В системах с дополнением до 2 абсолютное значение самого отрицательного значения выходит за пределы допустимого диапазона, например, для 32-битного типа int с дополнением до 2, 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); // неопределённое поведение в системах// с дополнением до 2}

Вывод:

abs(+3) = +3 abs(-3) = +3

[править]Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 2192 C++98 перегрузки std::abs были несогласованно объявлены
в двух заголовках
эти перегрузки объявлены в обоих заголовках

[править]Смотрите также

абсолютное значение числа с плавающей запятой (|x|)
(функция)[править]
возвращает величину комплексного числа
(шаблон функции)[править]
применяет функцию abs к каждому элементу valarray
(шаблон функции)[править]
Документация C по abs, labs, llabs
close