我想在下面的代码中尝试实现的是找到移动平均线;
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变量需要它的值;这两者都需要计算移动平均线。
所以,基本上这是第一次运行上述程序的问题;因为如果你通过它,上述逻辑就足以进行移动平均计算。你们觉得怎么样?
提前致谢。
答案 0 :(得分:2)
最简单的解决方案是使用序列的第一个值初始化变量:
int prev = getValue();
while (valuesAvailable())
{
int next = getValue();
double moving_average = (prev + next) / 2.;
// use moving_average
prev = next;
}
请注意,我假设您的序列中至少有一个值:您可能需要在获取第一个值之前进行检查以确保它实际存在。