如何在C中创建无穷大值? (特别是整数值)

时间:2011-11-16 14:11:49

标签: c graph

我制作了重量指导图,就像这样

6
0 3 4 INFINITY INFINITY INFINITY
INFINITY 0 INFINITY 7 INFINITY INFINITY
INFINITY 3 0 5 11 INFINITY
INFINITY INFINITY INFINITY 0 6 3
INFINITY INFINITY INFINITY INFINITY 0 4
INFINITY INFINITY INFINITY INFINITY INFINITY 0

首先,我使用了一些整数值来表示无穷大,如99或20000。 但是当我发现它是错的时候,v5 - > v4必须是表达无穷大但表示一些整数值。

  

ex:从v2到v3的最短路径:v2 v3(长度:200000)

是否有整数的无穷大值?

我的朋友说〜(1 <&lt; 31)但它不起作用

3 个答案:

答案 0 :(得分:8)

与浮点类型不同,整数类型没有无穷大的标准值。如果你必须拥有一个,你必须自己选择一个值(例如INT_MAX)并在整个代码中正确处理它。请注意,如果执行此操作,则可以在赋值和比较中使用特殊值,但不能在算术表达式中使用。

答案 1 :(得分:3)

整数不存在无穷大。你朋友建议的是32位有符号整数中的最大数字,但仍然不是无穷大。如果你把它添加到某个东西(例如在最短的路径中),这也会引入溢出的可能性,你实际上最终可能会得到一个较小的数字。所以不要这样做。

正确的方法是逐个处理无限。使用无穷大的标志,例如相同的~(1<<31),或者甚至更好的-1,并且在您的代码中,每当您想要添加两个值时,检查它们中的任何一个是否等于此标志(等于无穷大),将结果设置为无穷大而不实际进行任何求和。或者,当您检查一个值是否小于另一个值时,检查一个值是否等于此标志(等于无穷大),然后另一个值肯定更小,同样没有实际进行比较。

答案 2 :(得分:0)

编辑:没意识到你在指定整数。

解决方案可能是使用'-1'而不是无穷大作为基数值。如果我没记错的话,有向图不应该有负值。