【发布时间】:2010-09-25 18:20:00
【问题描述】:
我在处理一些使用浮点数的 C 代码,当我尝试在屏幕上打印浮点数时,我得到 1.#INF00、-1.#IND00 和 -1.#IND。这些值是什么意思?
我相信 1.#INF00 表示正无穷大,但是 -1.#IND00 和 -1.#IND 呢?我有时也看到这个值:1.$NaN 这不是一个数字,但是是什么导致了这些奇怪的值,这些值如何帮助我进行调试?
我正在使用MinGW,我相信它使用IEEE 754 表示浮点数。
谁能列出所有这些无效值以及它们的含义?
【问题讨论】:
-
这是 Microsoft C 运行时库格式化 Infinity 和 NaN 浮点值的方式。 MinGW 没有自己的 CRT,它使用操作系统提供的 msvcrt.dll。它看起来的确切方式取决于您使用的 printf() 格式说明符,因此额外的零,它甚至可以turn into 1.#J。 C99 标准设置了预期的输出,在 VS2015 中采用,所以这个怪癖会消失。