Что происходит, когда переменная с плавающей точкой выходит за пределы?

Я заметил две вещи:

std::numeric_limits<float>::max()+(a small number) дает: std::numeric_limits<float>::max().

std::numeric_limits<float>::max()+(a large number любить:std::numeric_limits<float>::max()/3) дает инф.

Почему эта разница? 1 или 2 приводит к ПЕРЕКЛЮЧЕНИЮ и, следовательно, к неопределенному поведению?

Редактировать: Код для тестирования это:

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;

Ответы на вопрос(2)

Ваш ответ на вопрос