c - 无法在 C 中打印 float64 值

标签 c types floating-point printf

对于此处对数据类型或 C 操作方式的任何误解,我深表歉意(我对学习还是比较陌生)。有人可以向我解释为什么我无法获得所需的输出(见下文)吗?

#include<stdio.h>
#include<math.h>

#define size         10

typedef unsigned int      Uint16;

typedef long double        float64;


Uint16 i;


float64 normalization = 0;

void main() {

  for (i=0;i<size;i++)
  {
     normalization = normalization + i;    // same as "normalization += i;"

     printf("\n --------");
     printf("\n normalization %f", normalization);

  }

  return;
}

控制台输出如下:

 --------
 normalization 0.000000
 --------
 normalization -0.000000
 --------
 normalization -2.000000
 --------
 normalization -2.000000
 --------
 normalization -0.000000
 --------
 normalization -3105036184601417900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
 --------
 normalization -0.000000
 --------
 normalization -26815615859885194000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
 --------
 normalization -0.000000
 --------
 normalization -0.000000

我期望输出是:

normalization = 0
normalization = 1
normalization = 3
normalization = 6
normalization = 10
normalization = 15
// and so forth...

最佳答案

这里的问题是格式说明符和参数类型不匹配,导致未定义的行为

格式 %f(以及 %lf)用于普通 double,而不是 long double .

对于 long double 你需要使用 printf格式的前缀 L,如 %Lf:

printf("normalization %Lf\n", normalization);

顺便说一句,请养成在输出中尾随换行的习惯。因为输出到 stdout(这是 printf 写入的地方)默认情况下是 line 缓冲的,前导换行符可能导致意外的“丢失”输出。

关于c - 无法在 C 中打印 float64 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60303009/

相关文章:

C : How to pause sigaction Timer

c - 使用C将字符串分成两半

c - 调试结果和构建/运行结果之间的差异 - Netbeans 中的 C

string - 在 Haskell 中,如何获得 0.03 而不是 3.0e-2?

php - 为什么 1024 * 1024 * 1024 * 1024 * 1024 返回 float ?

c - 在 C 中索引数组会返回段错误

c# - 确定集合是否属于 IEnumerable<T> 类型

c# - 如何在 C# 中更改变量类型?

c# - 如何以编程方式检查类型是结构还是类?

java - 数学简单例子