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

问题描述 投票:-1回答:1

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

code1:

    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;
    }

code2:

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];
}
c c89
1个回答
0
投票

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

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

有区别

© www.soinside.com 2019 - 2024. All rights reserved.