Я заметил две вещи:
-
std::numeric_limits<float>::max()+(a small number)
дает:std::numeric_limits<float>::max()
. -
std::numeric_limits<float>::max()+(a large number
like:std::numeric_limits<float>::max()/3)
дает inf.
Почему это различие? Получает ли 1 или 2 значение OVERFLOW и, следовательно, поведение undefined?
Изменить: Код для тестирования:
1.
float d = std::numeric_limits<float>::max();
float q = d + 100;
cout << "q: " << q << endl;
2.
float d = std::numeric_limits<float>::max();
float q = d + (d/3);
cout << "q: " << q << endl;