【问题标题】:Unexpected Output- long double [duplicate]意外输出-long double [重复]
【发布时间】:2021-10-20 22:23:03
【问题描述】:

我写的代码如下

#include <stdio.h>

int main()
{
    long double var = 3.1415926535;
    printf("%.6Lf", var);
}

代码的输出是 0.000000。根据我的输出应该是 3.141592。请说出我做错了什么。

【问题讨论】:

  • 由于代码是正确的,因此很难复制问题。你确定你构建了你展示的确切代码吗?你如何建造它?在什么环境下?什么编译器(名称和版本)?
  • 试试他的:printf("version %s %s -- %.6Lf\n", __DATE__, __TIME__, var); 并检查您正在运行的版本是否实际上是您编译的版本(几秒钟前的日期和时间)。
  • @pmg 它显示的版本是 2021 年 8 月 19 日 13:46:26 -- 0.000000。
  • 为什么不呢?很明显,您需要使用__mingw_printf(),因为printf() 使用无法打印long doubles 的Microsoft 库。阅读所有答案,尤其是this one!

标签: c variables debugging floating-point output


【解决方案1】:

尝试使用 GDB 编译器,分步运行您的代码,看看问题出在哪里,您的变量会更改其值。这就是我们学习程序的方式,不要每次都指望别人来解决你的问题,这种方法一定是最后一种。看看这个GDB tutorial 并自行解决这个问题。

【讨论】:

  • 因为我们这里有一个 Microsoft 问题,所以这无济于事。但是,总的来说,您是对的。
猜你喜欢
  • 1970-01-01
  • 2013-02-02
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 2015-12-02
  • 1970-01-01
相关资源
最近更新 更多