uninitialized local variable 'j' used

2019-01-19 09:28发布

问题:

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;
}

回答1:

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;



回答2:

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?



回答3:

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...