在 C 代码的 printf 语句中使用时,不会显示浮点或双精度值

Posted

技术标签:

【中文标题】在 C 代码的 printf 语句中使用时,不会显示浮点或双精度值【英文标题】:float or double value is not getting displayed when used in printf statement in C code 【发布时间】:2020-06-24 13:34:27 【问题描述】:

我想在我们的项目中显示一个精度为 2 位小数的值。 所以我决定使用浮点数作为变量的数据类型——这是我们在学习 C 语言时所获得的基本知识。

然而,令我惊讶的是,编译后执行二进制文件时,我没有看到浮点变量值的位置出现打印。

下面是sn-p使用的代码-

float rate_sent = 0, rate_received = 0;
printf("\n Direct printf - %.2f/%.2f", rate_sent, rate_received);

预期输出 -

直接 printf - 0.00/0.00

实际输出 -

直接 printf - /

我尝试使用 double 作为我的数据类型。但没有区别。 我尝试使用 %g 作为格式说明符,仍然没有区别。

当我在任何在线 C 编译器上使用代码 sn-p 时,它工作正常,但是当我在我们的代码库中尝试此代码 sn-p 时,我们看不到它按预期工作。 它看起来是基本的 C 语言,但仍然无法理解它为什么不打印。

该软件模拟在 x86_64 Linux 环境下运行。我在 x86_64 RHEL VM 上运行我的应用程序。所以我认为机器会支持浮点数。

这可能是编译器的限制吗?

你能找出这可能是什么问题吗?

编辑:但是,当我使用 %u 格式说明符时,我看到了一些垃圾值

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 【参考方案1】:

发现浮点/双精度变量是由编译器声明并分配空间的。 当在 gdb 下打印相同的变量时,会话值以十进制格式打印。 所以这只是印刷问题。我认为 printf 函数被使用宏覆盖而不处理 %f 格式说明符。

【讨论】:

以上是关于在 C 代码的 printf 语句中使用时,不会显示浮点或双精度值的主要内容,如果未能解决你的问题,请参考以下文章

shell printf命令:格式化输出语句

shell之 printf 输出语句

控制台中的dev c ++ printf错误

c语言中使用switch-case语句时,NULL是其中的一种情况,那么在键盘上如何输入才能转到这种情况?

c语言if语句中printf在里和外怎么不一样输出

c++编程中语句太长如何换行