移动平均计算中未初始化的变量

uninitialized variable in moving average computation

本文关键字:初始化 变量 计算 移动      更新时间:2023-10-16

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

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变量;这两个都需要计算移动平均线。

所以,基本上这是上述过程第一次运行的问题;因为如果你超越了它,上面的逻辑对于移动平均计算来说就足够了。你们怎么看?

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

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

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