为什么printf(“%f”,0);给出未定义的行为?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么printf(“%f”,0);给出未定义的行为?相关的知识,希望对你有一定的参考价值。

该声明

printf("%f
",0.0f);

打印0。

但是,声明

printf("%f
",0);

打印随机值。

我意识到我表现出某种未定义的行为,但我无法弄明白为什么具体。

所有位都为0的浮点值仍然是值为0的有效floatfloatint在我的机器上大小相同(如果这甚至是相关的)。

为什么在printf中使用整数文字而不是浮点文字导致此行为?

附:如果我使用,可以看到相同的行为

int i = 0;
printf("%f
", i);

以上是关于为什么printf(“%f”,0);给出未定义的行为?的主要内容,如果未能解决你的问题,请参考以下文章

C语言,为啥用 printf("%d",c*0.85)出来的结果不对?

如何将 1 和 0 的行转换为新的 int 列

震惊!double输入输出的秘密竟然是~

vs2017 C语言 printf未定义

第四周作业

使用未定义数量的参数调用C函数