Namespaces
Variants

std:: abs, std:: labs, std:: llabs, std:: imaxabs

From ru.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) (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>
(6) (начиная с C++11)
(constexpr начиная с C++23)
(7) (начиная с C++11)
(constexpr начиная с C++23)

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

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

Перегрузка (6) функции std::abs для типа std::intmax_t предоставляется в заголовочном файле <cinttypes> тогда и только тогда, когда 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); // 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 были
непоследовательно объявлены в двух заголовочных файлах
объявлены эти перегрузки
в обоих заголовочных файлах

Смотрите также

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