使用未初始化的局部变量'j'

uninitialized local variable 'j' used

本文关键字:局部变量 初始化      更新时间:2023-10-16

这是我的一些代码的一部分。我收到一个错误,使用了未初始化的局部变量"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;
}

所以你在行中首先使用变量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++)

因为我认为这可能是您实际上想要做的......