Почему выполняет numeric_limits:: min возвращает отрицательное значение для int, но положительные значения, например. float и double?
#include<iostream>
#include<limits>
using namespace std;
int main() {
cout << "int: " << numeric_limits<int>::min() << " "
<< "float: " << numeric_limits<float>::min() << " "
<< "double: " << numeric_limits<double>::min() << "\n";
return 0;
}
Выход:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
Из cppreference:
Возвращает минимальное конечное значение, представляемое числовым типом T.
Для типов с плавающей точкой с денормализацией min возвращает минимум положительное нормализованное значение. Обратите внимание, что это поведение может быть неожиданным, особенно по сравнению с поведением мин для интегральных типов. к найдите значение, которое не имеет значений меньше, чем значение, используйте
numeric_limits::lowest
.min имеет смысл только для ограниченных типов и для неограниченных неподписанных типов, то есть типов, которые представляют собой бесконечный набор отрицательных значений не имеет значимого минимума.