创建均匀间隔的双精度值数组

时间:2017-12-15 18:36:00

标签: c arrays matlab double

我是C中的菜鸟,我来自Matlab。我疯狂地做一个非常简单的操作,比如创建一个均匀间隔的数组。 我想要做的是拥有一个包含50个元素的数组,从0开始,常量增量为0.1。 在matlab中,它将如此简单:

n=50;
h=0.1;
t=0:h:(n-1)*h;

在C中我正在尝试这个:

#include<stdio.h>

int main() {

  int n = 50;    
  double h = 0.1;

  double t[n];
  t[0] = 0;

  int i;
  for (i = 0; i <= n; i++){
    t[i+1] = t[i] + h;
    printf("%i %d\n",i, t[i]);
  }

  return 0;
}

输出是疯狂的:

0 0
1 -1717986918
2 -1717986918
3 858993460
4 -1717986918
5 0
6 858993459
7 1717986918
8 -1717986919
9 -858993460
10 -1
...

我真的无法理解为什么。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

printf("%i %d\n",i, t[i])中,t[i]double,但%d要求您传递int。使用%g作为打印double的常规格式。