-3

我在以下代码中试图实现的是找到移动平均线;

int slots = int ((sr+e)/mst); // finding number of slots


int temp2;
int temp1;

if (temp1 == null) 
{
temp2 = 0;
}

temp2=temp1;   // previously found number of slots
temp1=slots;  // presently found number of slots
double mov_avg = (temp2+temp1)/2; //moving average

问题是当我编译时,我收到 temp1 未初始化的警告;在进行了一项小型研究后,我发现变量在未初始化时不会在 C++ 中默认存储空值或零值;

我不能在代码中放入 temp1 = 0 的行,因为下一次迭代需要它的值才能传递给 temp2 变量;这两者都是计算移动平均线所必需的。

所以,基本上这是第一次运行上述程序的问题;因为如果你通过了它,上面的逻辑就足以计算移动平均线了。你们有什么感想?

提前致谢。

4

1 回答 1

2

最简单的解决方案是使用序列的第一个值初始化变量:

int prev = getValue();

while (valuesAvailable())
{
    int next = getValue();
    double moving_average = (prev + next) / 2.;
    // use moving_average
    prev = next;
}

请注意,我假设您的序列中至少有一个值:您可能需要在获取第一个值之前进行检查以确保它确实存在。

于 2013-04-25T08:23:38.553 回答