我注意到两点:
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;