То, что я пытаюсь достичь в следующем коде, - найти скользящую среднюю;неинициализированная переменная в скользящем среднем вычислении
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 не инициализирован; после небольшого исследования я обнаружил, что переменные не сохраняют значение null или нулевое значение по умолчанию в C++, когда оно не инициализировано;
Я не могу поместить строку как temp1 = 0 в код, так как ее значение будет необходимо для последующей передачи в переменную temp2; оба из которых потребуются для вычисления скользящей средней.
Итак, в основном это проблема для первого срабатывания описанной выше процедуры; потому что, если вы пройдете мимо него, вышеуказанной логики будет достаточно для вычисления скользящего среднего. Ребята, что вы думаете?
Заранее спасибо.
Похоже, вы можете сделать это намного проще, просто имея значение 'value = (value + nextitem)/2;' на каждой итерации. –
@ KerrekSB: Я не думаю, что это правильно. Возьмем следующий образец: '90; 10; 0'. Скользящие средние по двум значениям будут '50; 5' будет ли ваша формула давать' 50; 25'. Или я что-то пропустил? –
Если вы уже ожидали, что переменные по умолчанию будут инициализированы до нуля, почему вы не можете сделать это вручную и получить тот же эффект? Нет смысла не инициализировать их до того, как они будут использованы, поскольку поведение не определено. 'int temp1 = 0;' –