【问题标题】:Array increment doesnt give the correct value数组增量没有给出正确的值
【发布时间】:2019-11-11 14:24:56
【问题描述】:

这是一个很奇怪的问题。我看不到 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];
}

【问题讨论】:

  • 请发布包含所有相关变量声明的minimal reproducible example。我们无法猜测变量类型。
  • 您的代码不完整。请将您的代码包装在 main 函数中,以允许编译和运行它并显示预期和实际输出。
  • “没有给出正确的值” 不是问题描述。你期望什么价值?为什么?你会得到什么?

标签: c c89


【解决方案1】:

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

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

有区别

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多