我正在查看一些第三方代码,我不确定一行是做什么的.我无法发布确切的代码,但它是:
bool function(float x)
{
float f = doCalculation(x);
return x > 0 ? f : std::numeric_limits<float>::infinity();
}
Run Code Online (Sandbox Code Playgroud)
这显然会引发编译器关于转换float-> bool的警告,但实际行为是什么?Visual C++如何将浮动转换为bools?至少我应该能够取代那令人讨厌的无限......
Căt*_*tiș 22
我认为这是一个错误.该函数应该返回一个浮点数.这对我来说似乎合情合理.
转换到bool的转换与float!= 0相同.但是,由于精度的原因,严格比较两个浮点并不总是如你所期望的那样.