数组增量没有给出正确的值
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] 没有被赋予正确的值
有区别
这是一个很奇怪的问题。我看不出 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] 没有被赋予正确的值
有区别