这一段代码能够正确编译 但是当运行到i=772时在 NR[i,j] = 255;处总是提示索引超出数组界限 int k=0; for(i=0;i<N-1;i++) for (j = 0; j < M-1; i++) { x[k] = fuzhua0 + fuzhua1 * j + fuzhua2 * i+1; y[k] = fuzhub0 + fuzhub1 * j + fuzhub2 * i+1; if ((int)x[k] < 0 || (int)(y[k]) < 0 || (int)(y[k]) + 1 > 685 || (int)x[k] + 1 > 563) // if ((int)(x[k]) > 0 && (int)(x[k]) < output2.Image.Height-1 && (int)(y[k]) > 0 && (int)(y[k]) < output2.Image.Width-1) { NR[i,j] = 255; NG[i,j] = 255; NB[i,j] = 255; } else { dx[i * j] = x[k] - (int)x[k]; dy[i * j] = y[k] - (int)y[k]; juzhenWx.SetElement(0, 0, 1 - dx[k]); juzhenWx.SetElement(0, 1, dx[k]); juzhenWy.SetElement(0, 0, 1 - dy[k]); juzhenWy.SetElement(1, 0, dy[k]); juzhenI.SetElement(0, 0, R[(int)(x[k]), (int)(y[k])]); juzhenI.SetElement(1, 0, R[(int)(x[k]), (int)(y[k]) + 1]); juzhenI.SetElement(0, 1, R[(int)(x[k]) + 1, (int)(y[k])]); juzhenI.SetElement(1, 1, R[(int)(x[k]) + 1, (int)(y[k]) + 1]); juzhenfuzhu = juzhenWx.Multiply(juzhenI); juzhenWy.InvertGaussJordan(); NR[i, j] = (int)(juzhenfuzhu.Multiply(juzhenWy).GetElement(0, 0)); juzhenI.SetElement(0, 0, G[(int)(x[k]), (int)(y[k])]); juzhenI.SetElement(1, 0, G[(int)(x[k]), (int)(y[k]) + 1]); juzhenI.SetElement(0, 1, G[(int)(x[k]) + 1, (int)(y[k])]); juzhenI.SetElement(1, 1, G[(int)(x[k]) + 1, (int)(y[k]) + 1]); juzhenfuzhu = juzhenWx.Multiply(juzhenI); juzhenWy.InvertGaussJordan(); NG[i, j] = (int)(juzhenfuzhu.Multiply(juzhenWy).GetElement(0, 0)); juzhenI.SetElement(0, 0, B[(int)(x[k]), (int)(y[k])]); juzhenI.SetElement(1, 0, B[(int)(x[k]), (int)(y[k]) + 1]); juzhenI.SetElement(0, 1, B[(int)(x[k]) + 1, (int)(y[k])]); juzhenI.SetElement(1, 1, B[(int)(x[k]) + 1, (int)(y[k]) + 1]); juzhenfuzhu = juzhenWx.Multiply(juzhenI); juzhenWy.InvertGaussJordan(); NB[i, j] = (int)(juzhenfuzhu.Multiply(juzhenWy).GetElement(0, 0)); } k++; } 请问是什么原因