1

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;
}
Drew
  • 29,895
  • 7
  • 74
  • 104
user2371621
  • 29
  • 2
  • 2
  • 7

3 Answers3

4

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?

justhalf
  • 8,960
  • 3
  • 47
  • 74
3

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;

Ayush
  • 41,754
  • 51
  • 164
  • 239
2

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

nhgrif
  • 61,578
  • 25
  • 134
  • 173