- ベストアンサー
このコードは省いてもよいのでしょうか?
下記のプログラムは2行3列の行列と3行2列の行列の積を求めるものです。 int main(void) { int i, j, k; int mx[2][3] = {{1, 2, 3}, {4, 5, 6}}; int my[3][2] = {{1, 5}, {5, 3}, {8, 1}}; int mz[2][2] = {0}; for(i=0; i<2; i++) { for(j=0; j<2; j++) { mz[i][j] = 0; for(k=0; k<3; k++) mz[i][j] += mx[i][k] * my[k][j]; } } for(i=0; i<2; i++) { for(j=0; j<2; j++) printf("%3d", mz[i][j]); putchar('\n'); } return (0); } 【質問】 main関数冒頭で int mz[2][2] = {0}; と初期化されていますが、後に出てくるforループ中の mz[i][j] = 0; は結局同じことをして無駄なコードではないのでしょうか? このコードを省いたプログラムをコンパイルして実行しても結果には影響ありませんでした。 とはいえ、考えが合っているか不安なので回答よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
お礼
回答ありがとうございます!! 初期化した後に、それを使用する前に書き換えられるのを防ぐために、使用する箇所に近い所の方がいいんですね! 勉強になりました!今後参考にさせて頂きます! 回答本当にありがとうございました。