为什么 %F 格式说明符不能与 printf 一起使用?

问题描述 投票:0回答:1

我在使用

printf()
功能时遇到问题,我想分享详细信息。我指的两个主要来源,cplusplus.comcppreference.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]

c printf codeblocks format-specifiers
1个回答
0
投票

1999 年 ISO 标准将

%F
格式说明符添加到 C 语言中。

显然您正在使用的实现包括一个 C 运行时库,其

printf
函数不支持
%F

在这种情况下,

%f
%F
将产生完全相同的输出。仅无穷大和 NaN 的输出有所不同;
%F
分别生成
INF
INFINITY
NAN
,而不是
inf
infinity
nan

请注意,您的编译器的版本不会影响这一点。编译器(在你的例子中是 gcc)只会生成对

printf
函数的调用。实现该功能的是运行时库。编译器和运行时库是 C 实现的组件。

Microsoft Windows 的 C 实现合并旧版本的 Microsoft 运行时库的情况并不罕见。

© www.soinside.com 2019 - 2024. All rights reserved.