Ken*_*Y-N 6 c++ floating-point nan language-lawyer
我遇到了这个代码,它发出警告gcc:
float f;
// Calculate a value for f
if (!f == 0.0)
{
// Handle it being non-zero
}
Run Code Online (Sandbox Code Playgroud)
这可能只是另一个团队成员的错字,并检查代码的真正含义是:
if (f != 0.0)
// OR
if (!(f == 0.0))
Run Code Online (Sandbox Code Playgroud)
我已经纠正了代码,但我只是想知道会!NaN评估什么.我们使用f里面的值if,所以我们不希望NaN超过支票.
请参阅https://en.cppreference.com/w/cpp/language/implicit_conversion
整型、浮点型、无作用域枚举、指针和成员指针类型的纯右值可以转换为 bool 类型的纯右值。
零值(对于整型、浮点型和无作用域枚举)以及空指针和指向成员的空指针值将变为 false。所有其他值都变为 true
因此!f == 0.0相当于!(f != 0.0) == 0.0或(f == 0.0) == false或f != 0.0
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |