• 締切済み

変数に入る値

以下の1部のコードがあるとします。 #include<stdio.h> #define N 3 #define M 3 int main(){ float i,j,k;    ・    ・ここのプログラムは省略します。    ・ for(i=0; i<N; i++){ for(j=0; j<N; j++){ for(k=0; k<M; k++){ c[i][j] += a[i][k] * b[k][j]; }}} このようなコードがあった場合、c[i][j] += a[i][k] * b[k][j];のところで 3個目のfor文の1回目のループの時、 c[i][j] += a[i][k] * b[k][j];の[i][j]や[i][k]、[k][j]にはいる値は c[0.000000][0.000000]+=a[0.000000][0.000000]~~~~~~~~ とかんがえられるでしょうか? i,j,kはint型のほうがよいですが、確認のためfloatにしました。 意味不明な質問ですみません。 よろしくお願いします。

みんなの回答

回答No.3

>floatでプログラムをコンパイルしても正常に結果がでるのですが コンパイラが int 型に勝手に変換してるのでは? (環境がわからないので勘ですが・・・)

serumnuit
質問者

お礼

返信ありがとうございます。 環境はBorland C++ Compiler です。

noname#208124
noname#208124
回答No.2

c[(int)i][(int)j] のようにしないとVC++でもgccでもコンパイル通りませんけど それより狭いスコープでi,j,k再定義してたりしませんか

serumnuit
質問者

お礼

すみません、スコープというのはよくわかりませんが、 i,j,kを定義する場所ではすべてfloatにしても、コンパイルできました・・

回答No.1

   floatは配列の添え字に使えない。  

serumnuit
質問者

お礼

返信ありがとうございます。 調べたら、使えないとのことでした。 floatでプログラムをコンパイルしても正常に結果がでるのですが なぜでしょうか??