leg*_*s2k 24 c++ integer limits numeric integral
我正在阅读在C++中将int设置为Infinity.我明白,当一个人需要真正的无限时,一个人应该使用numeric_limits<float>::infinity(); 我猜的理由背后是通常整型已指定为用于表示如特殊状态没有价值的NaN,天道酬勤,像等IEEE 754个浮动不(再C++不强制要求既不- int与float使用都留给实现); 但max > infinity对于给定的类型,它仍然是误导性的.我试图理解标准中这个调用背后的基本原理.如果infinity对某种类型没有意义,那么不应该禁止它而不是要检查其有效性的标志吗?
Naw*_*waz 31
该函数对于 返回 的函数numeric_limits<T>::infinity()有意义.Tnumeric_limits<T>::has_infinitytrue
如果是T=int,它返回false.所以这种比较没有意义,因为numeric_limits<int>::infinity()没有返回任何有意义的值来进行比较.
相反,假设该标准确实保留了一些表示不稳定性的值,那就是numeric_limits<int>::infinity() > numeric_limits<int>::max()。这意味着将存在一些int大于的值max(),也就是说,的某些可表示值int大于int的最大可表示值。
显然,无论标准指定哪种方式,都违反了某些自然的理解。或者inifinity() <= max()存在x使得int(x) > max()。该标准必须选择要违反的自然规则。
我相信他们明智地选择了。