移动平均计算中未初始化的变量
uninitialized variable in moving average computation
我想在以下代码中实现的是找到移动平均线;
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;
}
请注意,我假设序列中至少有一个值:您可能需要在获得第一个值之前进行检查,以确保它确实存在。
相关文章:
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 在 C++ 中访问 lambda 捕获初始化变量
- 为什么C++不支持对未初始化变量进行智能分析?
- 使用 clang++ 和 g++ 在C++中初始化变量
- C++使用 lambda 初始化变量
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++ - 输出与初始化变量不同?
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- C++ 中的初始化变量
- C++中未初始化变量的值
- 如何在需要提及需要循环声明的其他类的类中初始化变量?
- 我想知道在构造函数中初始化变量时的生命周期
- 读取恰好具有良好值的未初始化变量
- 如何在 getter 的父类中初始化变量的情况下访问子类中的变量
- 为什么在 c++ 中有多种初始化变量的方法
- 没有参数的默认构造函数是否总是初始化变量?
- 是否可以使用 lambda 初始化变量(删除复制 ctor 时)
- 使用构造函数跳闸UB的新放置后使用初始化变量