数组增量没有给出正确的值

Array increment doesnt give the correct value

这是一个很奇怪的问题。我看不出 code1 和 code2 之间有任何区别。但是,应该有所不同,因为它们会产生不同的结果:(注意 f0 和 f0A(充当缓冲区))

代码 1 :

    for (k = 0; k < 6; k++) {
      r1 = i0 + 6 * k;
      f0 = 0.0F;
      for (r2 = 0; r2 < 6; r2++) {
        f0 += (float)b_a[i0 + 6 * r2] * p_est[r2 + 6 * k];
      }

      a[r1] = f0;
    }

代码 2:

float f0A[6] = {0};
for (k = 0; k < 6; k++) {
  r1 = i0 + 6 * k;
  for (r2 = 0; r2 < 6; r2++) {
    f0A[r2] += (float)b_a[i0 + 6 * r2] * p_est[r2 + 6 * k];
  }
}
for (r2 = 0; r2 < 6; r2++) {
  r1 = i0 + 6 * r2;
  a[r1] = f0A[r2];
}

在第一个循环中,您将 a[r1] 设置为存储在 f0 中的求和。它被添加到每个循环中。

在第二个循环中,您没有进行求和,您的循环使用的是 += 但它会将每个循环存储在不同的 f0A 索引中。因此 a[r1] 没有被赋予正确的值

有区别