【发布时间】:2009-12-28 14:05:17
【问题描述】:
我正在查看一些第 3 方代码,但不确定其中一行在做什么。我无法发布确切的代码,但大致如下:
bool function(float x)
{
float f = doCalculation(x);
return x > 0 ? f : std::numeric_limits<float>::infinity();
}
这显然会引发编译器关于转换 float->bool 的警告,但实际行为会是什么? Visual C++ 如何将浮点数转换为布尔值?至少我应该能够取代那个讨厌的无穷大......
【问题讨论】:
-
对我来说这看起来像是糟糕的代码。为什么要计算
x <= 0.0?为什么要麻烦写出无穷大而不是 1.0 的表达式,因为它们都转换为true?如果x > 0.0和f == 0.0而不是abs(f) < epsilon,为什么从x 计算一些东西并返回false,因为浮点相等(在float到bool的转换中)是不确定的?我认为你那里有一些糟糕的代码。 -
无法发布“确切”代码?函数(x)的“确切”名称是什么?
-
它有什么不同?由于许可证限制,我无法发布代码,这足以等同于。
-
因为函数名通常可以洞察程序员想要 function() 做什么——这是每个人都在猜测的。
标签: c++ visual-c++