我在使用
printf()
功能时遇到问题,我想分享详细信息。我指的两个主要来源,cplusplus.com 和 cppreference.com,表明我可以使用 %f
和 %F
格式说明符。
但是,当我尝试在 Code::Blocks 20.03 中使用
%F
格式说明符时,我无法获得所需的输出。虽然此格式说明符在其他来源中被指示为可用,但我很困惑为什么它在我的编译器中不起作用。
代码输入:
#include<stdio.h>
#include<float.h>
int main()
{
float decimal_floating_point = 1.234567;
float Decimal_Floating_Point = 123.4567;
printf("decimal floating point = [%f]\n",decimal_floating_point);
printf("Decimal Floating Point = [%F]\n",Decimal_Floating_Point);
}
代码输出:
decimal floating point = [1.234567]
Decimal Floating Point = []
为什么我得到的结果是
Decimal Floating Point = []
而不是预期的Decimal Floating Point = [123.4567]
?
1999 年 ISO 标准将
%F
格式说明符添加到 C 语言中。
显然您正在使用的实现包括一个 C 运行时库,其
printf
函数不支持 %F
。
在这种情况下,
%f
和%F
将产生完全相同的输出。仅无穷大和 NaN 的输出有所不同; %F
分别生成 INF
、INFINITY
或 NAN
,而不是 inf
、infinity
或 nan
。
请注意,您的编译器的版本不会影响这一点。编译器(在你的例子中是 gcc)只会生成对
printf
函数的调用。实现该功能的是运行时库。编译器和运行时库是 C 实现的组件。
Microsoft Windows 的 C 实现合并旧版本的 Microsoft 运行时库的情况并不罕见。