我有一个我正在分析的代码片,但我不明白这一行:
double level = 0;
...
if (!(level == level) && !(level < level) && !(level > level))
exit(0);
Run Code Online (Sandbox Code Playgroud)
我认为这是关于双重比较的主题.知道它是什么?
对于非数字(NaN)而言,这是一个相当过度设计的测试.
NaN是一个特殊的浮点值.(并非所有浮点类型都有它,但最常见的是 - IEEE754 - 确实如此.)
它被定义为比较不等于所有其他数字,包括它自己.
它也被定义为不大于或不小于任何其他数字,包括其自身.(虽然这个后续的测试是多余的).
从C++ 11开始,您可以使用std::isnan(level).在此之前,我最喜欢的测试方法是使用相当简单的表达方式level != level.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |