我想在我的程序中用 C++ 表达浮点无穷大。
我遇到了两种方法来实现这一目标:使用INFINITY
and std::numeric_limits<float>::infinity()
.
两种选择似乎都有效,但我不确定哪一种是更好的选择。
一方面,INFINITY
是一个在 math.h 中定义的简单宏,使其易于使用。
另一方面,std::numeric_limits<float>::infinity()
是一个函数<limits>
并且是C++ STL的一部分,这似乎是一种常规方式。
总之:
我应该使用INFINITY
or std::numeric_limits<float>::infinity()
在我的 C++ 程序中表示浮点无穷大?
哪一种被认为是更好的做法,是否有我应该注意的性能或可移植性注意事项?
C 中引入宏来表达该语言中无法很好表达的事物。在这个特定的例子中,INFINITY
命名一个编译时常量。
C++引入不同的方式进入语言允许您表达过去在 C 中需要宏来实现的相同内容(在许多情况下,但不是所有情况下)。对于这种特殊情况,C++ 有一种以各种方式命名编译时常量的方法。
相比INFINITY
, using std::numeric_limits<float>::infinity()
具有以下优点:
- 它的作用域正确地位于名称空间内,这意味着其他代码可以使用该标识符
infinity
表示其他事物而不引起名称冲突。
- 它是强类型的并且names一个类型,所以
std::numeric_limits<T>::infinity()
可以专门针对不同的值T
,并且无需转换即可在通用上下文中使用。
- 它是语言的一部分(而不是单独的预处理器语言),这使得第三方工具(例如 IDE)更容易与其交互。
由于历史原因,infinity()
is a function但这并不是非常重要,因为(因为它是constexpr
)您可以在任何可以使用任何其他常量表达式的上下文中使用它。
相反,相比std::numeric_limits<float>::infinity()
, using INFINITY
具有以下优点:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)