在 C 代码的 printf 语句中使用时,不显示浮点值或双精度值
float or double value is not getting displayed when used in printf statement in C code
我想在我们的项目中显示一个精确到 2 位小数的值。
所以我决定使用 float 作为我的变量的数据类型——这是我们学习 C 语言时获得的基础知识。
然而,令我惊讶的是,在编译后执行二进制文件时,我没有在浮点变量值的位置看到打印。
下面是使用的代码片段-
float rate_sent = 0, rate_received = 0;
printf("\n Direct printf - %.2f/%.2f", rate_sent, rate_received);
预期输出 -
Direct printf - 0.00/0.00
实际输出-
Direct printf - /
我尝试使用双精度作为我的数据类型。但没有区别。
我尝试使用 %g 作为格式说明符,仍然没有区别。
当我在任何在线 C 编译器上使用该代码片段时它工作正常,但是当我在我们的代码库中尝试该代码片段时,我们没有看到它按预期工作。
它看起来是基本的 C 语言,但仍然无法理解为什么它不打印。
软件模拟在x86_64Linux环境下工作。我是 运行 我在 x86_64 RHEL VM 上的应用程序。所以我认为机器会支持浮点数。
这可能是编译器的限制吗?
有人能确定这里可能出现的问题吗?
编辑:但是,当我使用 %u 格式说明符时,我看到一些垃圾值
发现 float/double 变量由编译器声明和分配 space。
当相同的变量在 gdb 下打印时,会话值以十进制格式打印。
所以这只是印刷问题。我认为 printf 函数被宏覆盖,不处理 %f 格式说明符。
我想在我们的项目中显示一个精确到 2 位小数的值。 所以我决定使用 float 作为我的变量的数据类型——这是我们学习 C 语言时获得的基础知识。
然而,令我惊讶的是,在编译后执行二进制文件时,我没有在浮点变量值的位置看到打印。
下面是使用的代码片段-
float rate_sent = 0, rate_received = 0;
printf("\n Direct printf - %.2f/%.2f", rate_sent, rate_received);
预期输出 -
Direct printf - 0.00/0.00
实际输出-
Direct printf - /
我尝试使用双精度作为我的数据类型。但没有区别。 我尝试使用 %g 作为格式说明符,仍然没有区别。
当我在任何在线 C 编译器上使用该代码片段时它工作正常,但是当我在我们的代码库中尝试该代码片段时,我们没有看到它按预期工作。 它看起来是基本的 C 语言,但仍然无法理解为什么它不打印。
软件模拟在x86_64Linux环境下工作。我是 运行 我在 x86_64 RHEL VM 上的应用程序。所以我认为机器会支持浮点数。
这可能是编译器的限制吗?
有人能确定这里可能出现的问题吗?
编辑:但是,当我使用 %u 格式说明符时,我看到一些垃圾值
发现 float/double 变量由编译器声明和分配 space。 当相同的变量在 gdb 下打印时,会话值以十进制格式打印。 所以这只是印刷问题。我认为 printf 函数被宏覆盖,不处理 %f 格式说明符。