在C++标准库中,值std::numeric_limits::max()被指定为函数。特定类型的其他属性被作为常量给出(例如std::numeric_limits::is_signed)。所有类型为T的常量均被视为函数,而所有其他常量均被视为常数值。这样做的原因是什么?
继承Neil的评论,std::numeric_limit<T>
适用于任何数字类型,包括浮点数,如果您深入研究comp.lang.c++线程,您会看到提到可能无法为浮点值定义静态变量。
因此,为了保持一致性,他们决定将整数和浮点数都放在方法后面。
这将在C++0x中改变,所以有希望。
0.0123456789
存储在ROM中,编译器必须将其解释为实际的float
或double
值...但它应该如何舍入结果呢?它无法预测运行时将使用哪种舍入模式!C++11定义了哪些舍入模式会影响什么以及它们不会影响什么,从而使得可以对浮点数进行可移植的静态初始化。 - Matthieu M.