Поле max
Поле max класса numeric_limits возвращает
максимальное конечное значение, представимое для
заданного числового типа. Это значение полезно знать,
когда нужно ограничить диапазон вычислений, проверить
переполнение или просто выяснить пределы типа. Поле
не принимает параметров и возвращает значение того же
типа, для которого был инстанцирован шаблон
numeric_limits.
Стоит помнить, что для целочисленных знаковых типов
значение max не является симметричным по
отношению к минимуму: модуль минимального значения
на единицу больше. Для типов с плавающей точкой
max возвращает наибольшее нормализованное
число, а не бесконечность.
Синтаксис
numeric_limits<T>::max()
Пример
Давайте выведем максимальное значение для типа
int и для типа double:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << numeric_limits<int>::max() << endl;
cout << numeric_limits<double>::max() << endl;
return 0;
}
Результат выполнения кода:
2147483647
1.79769e+308
Пример
Давайте проверим, помещается ли результат умножения
в тип int, используя max как границу:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int a = 100000;
int b = 100000;
long long res = (long long)a * b;
if (res > numeric_limits<int>::max()) {
cout << "overflow" << endl;
} else {
cout << res << endl;
}
return 0;
}
Результат выполнения кода:
"overflow"
Пример
Давайте выведем максимальные значения для нескольких целочисленных типов и сравним их:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "char: " << (int)numeric_limits<char>::max() << endl;
cout << "short: " << numeric_limits<short>::max() << endl;
cout << "unsigned: " << numeric_limits<unsigned>::max() << endl;
return 0;
}
Результат выполнения кода:
"char: 127"
"short: 32767"
"unsigned: 4294967295"
Смотрите также
-
класс
numeric_limits,
который предоставляет информацию о пределах типов -
поле
min,
которое возвращает минимальное конечное значение -
поле
lowest,
которое возвращает наименьшее представимое значение -
поле
epsilon,
которое возвращает машинную разницу между единицей и следующим числом