私は2つのことを指摘しました:
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 は OVERFLOW になり、未定義の動作になりますか?
編集:これをテストするためのコード:
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;