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

时间:2013-10-01 01:50:04

标签: c++ error-handling variable-assignment

这是我的一些代码的一部分。我得到一个错误未初始化的局部变量'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 个答案:

答案 0 :(得分:2)

您没有给j一个值,因此uninitialized variable错误。

int j;与为j赋值0.

不同

你应该这样做:int j = 0;

答案 1 :(得分:2)

错误不是j正在使用。错误是j正在使用,但尚未初始化。

我建议您将for循环更改为:

for(i=0, j=0; i < 30; i++, j++)

我认为这可能是你真正要做的......

答案 2 :(得分:2)

所以你先在行

中使用变量j
f1 = FormAry[j].Element1;

但您之前没有为j分配任何值,因此“未初始化”。前面提到的j在您的声明中:

int j;

您需要为其指定一个值,例如0:

int j = 0;

这就是调用“初始化”,因为如果你没有为变量赋值,你应该从该变量得到什么值?