c+中积分类型的正无穷大和负无穷大+; 我正在阅读C++中的正负无穷大。

c+中积分类型的正无穷大和负无穷大+; 我正在阅读C++中的正负无穷大。,c++,types,infinity,numeric-limits,C++,Types,Infinity,Numeric Limits,我读到整数类型没有无穷大的值,即std::numeric_limits::infinity()不起作用,但std::numeric_limits::max()将起作用,并将表示整数类型可以表示的最大可能值 因此,std::numeric_limits::max()可作为其正无穷极限 或者整数类型只有最大值,而无穷大值不是真的?整数总是有限的 你能找到的最接近你要找的东西是将一个整数设置为它的最大值,这对于一个有符号整数来说只有20亿左右 std::numeric_limits有一个has_inf

我读到整数类型没有无穷大的值,即
std::numeric_limits::infinity()不起作用,但
std::numeric_limits::max()将起作用,并将表示整数类型可以表示的最大可能值

因此,
std::numeric_limits::max()可作为其
正无穷极限


或者整数类型只有
最大值
,而
无穷大值
不是真的?

整数总是有限的

你能找到的最接近你要找的东西是将一个整数设置为它的最大值,这对于一个有符号整数来说只有20亿左右


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

浮点数有一个特殊的位模式来指示“值为无穷大”,当某个操作的结果被定义为无限时使用

整数值有一组位数,所有位数都用来表示一个数值。没有“特殊位模式”,它只是位位置总和的意思

编辑:在我的AMD64体系结构程序员手册的硬拷贝第315页上,它说

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

当一个非零的、非无穷的数为 除以0或乘以无穷大,或将无穷大加到 无穷大或0。算术无穷是精确的。例如,添加 任何浮点数都可以+∞ 给出结果+∞ 算术比较在无穷大上正确工作。出现例外情况 仅当使用无穷大作为源操作数构成 无效操作


(任何键入错误都是我的)

据我所知,所有数据类型都是有限的。最大值是一个有限值,例如32位。你能解释一下你想对涉及无限限制的整数做什么运算吗?你可以将任何意义与任何值关联起来。你甚至可以把“567”当作NaN。但是std中的任何一个命题都没有(本机)支持。问题是:你想实现什么?实际上我正在实现定点人工智能,我正在尝试为我的定点类型定义正无穷大和负无穷大。我的不动点是一种积分类型,所以当我讨论如何定义它的正无穷大和负无穷大时,我产生了这样一个疑问:对于积分类型,最大值和无穷大值之间的区别是什么?你可以在你的不动点数学中定义无穷大值,但让它成为
std::numeric_limits::max()也许同样好
(它是负的对应物)-这真的取决于你计划做什么,以及你打算如何处理“无限”——例如“无限+无限=无限”?你认为NaN
“不是一个数字”吗?我认为这不是一个正确的解释,因为
-1/0
1/0
一样会返回
NaN
。不,NaN是不同的。请参阅上面我添加的报价(太大,无法发表评论)。(NaN是一种类似的编码,但分数是非零的,实际上NaN有多个变体)。很好的解释,谢谢。我的答案中有什么遗漏吗?