Используется неинициализированная локальная переменная 'j'
Вот часть кода, который у меня есть. Я получаю ошибочную неинициализированную локальную переменную 'j' и не вижу ее. насколько я могу судить, он используется. Может кто-нибудь, пожалуйста, помогите?
float Calculate(Element ElmAry[30], Formula FormAry[30])
{
int i;
int j;
float MoleWT = 0;
float MoleSum = 0;
char e1;
char e2;
char f1;
char f2;
for(i = 0; i < 30; i++) {
f1 = FormAry[j].Element1;
f2 = FormAry[j].ElementA;
e1 = ElmAry[i].eN1;
e2 = ElmAry[i].eN1;
if(e1 == f1 && e2 == f2) {
MoleWT = ElmAry[i].Weight * FormAry[j].Atom;
MoleSum = MoleSum + MoleWT;
j++;
}
}
return MoleSum;
}
3 ответа
Таким образом, вы используете переменную j
первый в очереди
f1 = FormAry[j].Element1;
Но вы не присвоили никакого значения j
ранее, следовательно, "неинициализированный". Предыдущее упоминание о j
было в вашей декларации:
int j;
Вам нужно присвоить ему значение, например 0:
int j = 0;
Это называется "инициализация", потому что, если вы не присваиваете значение переменной, какое значение вы должны ожидать от этой переменной?
Вы не дали j
значение, следовательно, uninitialized variable
ошибка.
int j;
не то же самое, что назначение j
значение 0.
Ты должен сделать: int j = 0;
Ошибка не в этом j
используется. Ошибка в том что j
используется, но не инициализируется.
Я предлагаю изменить ваш for
цикл до:
for(i=0, j=0; i < 30; i++, j++)
Как я думаю, это то, что вы на самом деле пытаетесь сделать...