2017-12-15 20 views
0

私はCでnoobです。私はMatlabから来ました。私は均等な間隔の配列の配列を作成するような非常に簡単な操作を行うことに夢中になります。 私がやりたいことは、0から0.1の一定増分で始まる50要素の配列です。 MATLABで、それはのように簡単になります:CIで倍精度の値を均等に配置した配列を作成する

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

このしようとしています:

#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 
... 

そして私は本当に」することができます理由を理解できない。

ありがとうございました! printf("%i %d\n",i, t[i])

答えて

4

t[i]doubleですが、%dはあなたがintを渡す必要があります。 doubleの一般的な書式については、%gを使用してください。

-1
#include<stdio.h> 
    #define n 501 
    int main() { 

    double h = 0.1; 


    // You cant passe varible whene you allocate statically 
    // use define 
    double t[n]; 

    t[0] = 0; 

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

    return 0; 
    } 
+0

答えを説明するために説明を追加できますか? – RAS

+0

ブロック内に 'static 'のない宣言は静的ではありません。彼らは、自動ストレージ期間を持つオブジェクトを宣言します。可変長配列はCのオプション機能であり、OPの実装では明らかにサポートされています。 –

関連する問題