1

ここに私が持っているいくつかのコードのセクションがあります。エラー uninitialized local variable 'j' used が表示されますが、表示されません。私が知る限り、それは使用されています。誰か助けてくれませんか?

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

3 に答える 3

4

したがってj、行の最初に変数を使用します

f1 = FormAry[j].Element1;

ただし、以前に値を割り当てていないjため、「初期化されていません」。の前の言及はjあなたの宣言にありました:

int j;

0 などの値を割り当てる必要があります。

int j = 0;

これが「初期化」と呼ばれるものです。変数に値を代入しない場合、その変数からどのような値が期待されるのでしょうか?

于 2013-10-01T01:51:54.543 に答える
3

値を指定していないjため、uninitialized variableエラーになります。

int j;j値 0を割り当てることと同じではありません。

やったほうがいい:int j = 0;

于 2013-10-01T01:51:24.647 に答える
2

エラーはj、使用されていることではありません。エラーは、j使用されているが初期化されていないことです。

forループを次のように変更することをお勧めします。

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

これはおそらくあなたが実際にやろうとしていることだと思います...

于 2013-10-01T01:51:45.410 に答える