【问题标题】:How would you define infinity? [closed]你如何定义无限? [关闭]
【发布时间】:2011-05-15 04:47:02
【问题描述】:

扩展你的想法:

#define INFINITY ((1 << (8*sizeof (int) - 6)) - 4)

展开了吗?

【问题讨论】:

  • 在什么情况下?为什么需要一个代表无穷大的值?为什么((1 &lt;&lt; (8*sizeof (int) - 6)) - 4)?为什么不使用floatdouble,因为它们可以表示正/负无穷大?
  • 我通常会说“一个最终会烧毁你的处理器的循环”......所以是的,这取决于上下文。
  • if (distances[i*MAX_ZONES+j]==INFINITY)
  • 在什么情况下距离等于无穷大?
  • 32 位 float "infinity" 作为整数的 IEEE 754 表示是 0x7F800000,该等式不会产生。

标签: c++ c-preprocessor infinity


【解决方案1】:

为什么不

numeric_limits<float>::infinity() 

numeric_limits<double>::infinity()

?

【讨论】:

    【解决方案2】:

    使用来自&lt;limits&gt; 头文件的numeric_limits,作为

    numeric_limits<float>::infinity() 
    

    看到这个:http://www.cplusplus.com/reference/std/limits/numeric_limits/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多