2

我正在阅读 C++ 中的正无穷和负无穷。

我读到整数类型没有无限值,即。std::numeric_limits<int>::infinity();不会工作,但std::numeric_limits<int>::max();会工作,并将表示可以由整数类型表示的最大可能值。

所以std::numeric_limits<int>::max();整数类型的 可以作为它的positive infinite limit?

还是整数类型只有max valueinfinity value不是真的?

4

2 回答 2

3

整数总是有限的。

最接近您要查找的内容是通过将整数设置为其最大值,对于有符号整数来说只有大约 20 亿左右。

std::numeric_limits 有一个 has_infinity 成员,您可以使用它来检查您想要的类型是否具有无限表示,这通常仅适用于浮点数,例如 float 和 double。

于 2013-05-03T09:54:14.763 回答
2

浮点数有一个特殊的位模式来表示“值是无穷大”,当某些运算的结果被定义为无穷大时使用它。

整数值具有一定的位数,所有位都用于表示数值。没有“特殊位模式”,只是位位置的总和意味着什么。

编辑:在我的 AMD64 Architecture Programmer's Manual 硬拷贝的第 315 页上,上面写着

无穷。Infinity 是正数或负数 +∞ 和 -∞,其中整数位为 1,偏置指数最大,小数为 0。infinite 是浮点格式可以表示的最大数,负无穷小大于任何有限数,正无穷大于任何有限数(即仿射意义)。

当一个非零、非无穷大的数除以 0 或乘以无穷大,或者将无穷大与无穷大或 0 相加时,就会产生无穷大的结果。算术无穷大是精确的。例如,将任何浮点数添加到 +∞ 会得到 +∞ 的结果 算术比较在无穷大上正常工作。仅当使用无穷大作为源操作数构成无效操作时,才会发生异常。

(任何打字错误都是我的)

于 2013-05-03T10:23:42.583 回答