c ++ float to bool conversion

Mr.*_*Boy 1 c++ visual-c++

我正在查看一些第三方代码,我不确定一行是做什么的.我无法发布确切的代码,但它是:

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相同.但是,由于精度的原因,严格比较两个浮点并不总是如你所期望的那样.

  • 怎么没用?他回答了你的问题:"转换为bool的转换与float!= 0相同".无穷大等于零吗?如果没有,浮点数将转换为true. (11认同)
  • 我会说你没有时间去追捕几个来电者,看看那里发生了什么.这显然是一个错误(虽然显然它是一个现在没有造成任何麻烦的).如果您需要了解,您需要弄清楚调用者的想法,了解其含义. (4认同)