Co się dzieje, gdy zmienna pływakowa wychodzi poza granice pływaka?

Zaznaczyłem dwie rzeczy:

std::numeric_limits<float>::max()+(a small number) daje: std::numeric_limits<float>::max().

std::numeric_limits<float>::max()+(a large number lubić:std::numeric_limits<float>::max()/3) daje inf.

Dlaczego ta różnica? Czy 1 lub 2 skutkuje PRZEPŁYWEM, a tym samym niezdefiniowanym zachowaniem?

Edytować: Kod do testowania:

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;

questionAnswers(2)

yourAnswerToTheQuestion