我是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
...
我真的无法理解为什么。
感谢您的帮助!
答案 0 :(得分:4)
在printf("%i %d\n",i, t[i])
中,t[i]
是double
,但%d
要求您传递int
。使用%g
作为打印double
的常规格式。