tru*_*ru7 4 c++ initialization
如果要初始化具有"未初始化"状态的浮点数,您会选择什么值?(值很容易测试,最不可能与实际值混淆)
float min = -999999.;
可能有问题可能要么与实际值混淆,要么甚至因为模糊的浮动舍入而被测试(它看起来很幼稚:-)
jua*_*nza 12
如果要避免使用有效值float,可以使用NAN:
#include <limits>
....
float min = std::numeric_limits<float>::quiet_NaN();
Run Code Online (Sandbox Code Playgroud)
然后你可以std::isnan用来检查:
#include <cmath>
....
bool not_cool = std::isnan(min);
Run Code Online (Sandbox Code Playgroud)
你可以使用NAN.然而
问题是使用未初始化的浮点变量.与整数不同,并非所有位模式都可用作浮点值.存在一类称为信令NaN或简称SNaN的值,它们是特殊的"非数字"值.如果您询问处理器,它将密切注意这些信令NaN并在遇到一个时引发"无效操作数"异常.(毕竟,这就是它被称为信号NaN的全部原因.)
另外我建议你使用 Boost.Optional像这样:
boost::optional<float> minValue; // initially unset
Run Code Online (Sandbox Code Playgroud)