- 締切済み
変数に入る値
以下の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にしました。 意味不明な質問ですみません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- postal0x02
- ベストアンサー率42% (24/57)
>floatでプログラムをコンパイルしても正常に結果がでるのですが コンパイラが int 型に勝手に変換してるのでは? (環境がわからないので勘ですが・・・)
c[(int)i][(int)j] のようにしないとVC++でもgccでもコンパイル通りませんけど それより狭いスコープでi,j,k再定義してたりしませんか
お礼
すみません、スコープというのはよくわかりませんが、 i,j,kを定義する場所ではすべてfloatにしても、コンパイルできました・・
- yaemon_2006
- ベストアンサー率22% (50/220)
floatは配列の添え字に使えない。
お礼
返信ありがとうございます。 調べたら、使えないとのことでした。 floatでプログラムをコンパイルしても正常に結果がでるのですが なぜでしょうか??
お礼
返信ありがとうございます。 環境はBorland C++ Compiler です。