Here is a section of some code I have. Im getting an error uninitialized local variable 'j' used and I dont see it. as far as I can tell it is being used. Can someone please help?
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;
}
You haven't given j
a value, hence the uninitialized variable
error.
int j;
is not the same as assigning j
a value of 0.
You should do: int j = 0;
So you use the variable j
first in the line
f1 = FormAry[j].Element1;
But you haven't assigned any value to j
previously, hence "uninitialized". The previous mention of j
was in your declaration:
int j;
You need to assign a value to it, like 0:
int j = 0;
That is call "initialization", because if you don't assign any value to a variable, what value should you expect from that variable?
The error isn't that j
is being used. The error is that j
is being used but it isn't being initialized.
I suggest changing your for
loop to:
for(i=0, j=0; i < 30; i++, j++)
As I think this is probably what you're actually trying to do...
来源:https://stackoverflow.com/questions/19106689/uninitialized-local-variable-j-used