現在,C言語で2次元配列の掛け算を勉強中なのですが,同じコードのはずなのに結果が違うという不思議な現象に悩んでいます...
恐らくコードが違うから結果が違うと思うのですが,全然見つかりません.
とてもモヤモヤして気になってしょうがないのですが,どなたか間違いを探して下さらないでしょうか...
gccでコンパイルしています.
OSはwin7 Ulti です.
宜しくお願い致します.
--------------------------------------
正しい結果が表示されるコード
#include<stdio.h>
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]);
}
printf("\n");
}
return(0);
}
間違った結果が表示されるコード
#include<stdio.h>
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]);
}
printf("\n");
}
return(0);
}