如何强制 printf 在 Windows 上输出 [-]inf 或 [-]infinity?
How to force printf to output [-]inf or [-]infinity on Windows?
C99 标准说:
A double argument representing an infinity is converted in one of the
styles [-]inf or [-]infinity -- which style is implemented is
implementation-defined. (p.278 section 7.19.6.1)
不幸的是Windows:
printf("%f\n", 1.0f/0.0f)
产生:1.#INF00
这是一个问题,因为一些应用程序希望输入符合 C 标准的字符串(C# 的 Double.Parse 适用于 "Infinity" 但不适用于“1.#INF00”,奇怪的是 "infinity"至少当我用 Mono 尝试时也不行。
我的问题是如何在 Windows 下强制 printf 输出 "inf" 或 "infinity" 而不是 1.#INF00 ?
(我正在用 MinGW gcc 4.8.2 编译)
C99 标准说:
A double argument representing an infinity is converted in one of the styles [-]inf or [-]infinity -- which style is implemented is implementation-defined. (p.278 section 7.19.6.1)
不幸的是Windows:
printf("%f\n", 1.0f/0.0f)
产生:1.#INF00
这是一个问题,因为一些应用程序希望输入符合 C 标准的字符串(C# 的 Double.Parse 适用于 "Infinity" 但不适用于“1.#INF00”,奇怪的是 "infinity"至少当我用 Mono 尝试时也不行。
我的问题是如何在 Windows 下强制 printf 输出 "inf" 或 "infinity" 而不是 1.#INF00 ?
(我正在用 MinGW gcc 4.8.2 编译)