【问题标题】:uninitialized local variable 'j' used使用了未初始化的局部变量“j”
【发布时间】:2013-10-07 01:15:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    int j; 与将j 赋值为 0 不同。

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

    【讨论】:

      【解决方案2】:

      错误不是正在使用j。错误是 j 正在被使用但它没有被初始化。

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

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

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

      【讨论】:

        【解决方案3】:

        所以你在行中首先使用变量j

        f1 = FormAry[j].Element1;
        

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

        int j;
        

        你需要给它赋值,比如0:

        int j = 0;
        

        这就是所谓的“初始化”,因为如果你不给一个变量赋值,你应该从那个变量中得到什么值?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-14
          • 2012-10-03
          • 2022-01-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多