2

で特定のプログラムをコンパイルしようとすると-Wall、GCC は次のような警告を表示します。

expcal.c:66:5: warning: statement with no effect [-Wunused-value]

この警告は次の行を参照しています:

ed.operator[j] == str[i];

これは次のループにあります。

for(i=0;i<strlen(str);i++)
        {
                j=0;
                if(str[i] == '+' || str[i] == '-' || str[i] == '*')
                {
                        if(str[i+1] == '+' || str[i+1] == '-' || str[i+1] == '*')
                                return 0;
                        else
                        {
                                //j=0;
                                ed.operator[j] == str[i];
                                count++;
                                j++;
                        }
                }
        }

この警告は、割り当てステートメントに問題がある場合に発生することを知っています。GCC がそのような警告を生成する原因となる上記のコードのどこが間違っているのでしょうか?

4

1 に答える 1

11

ステートメント

ed.operator[j] == str[i];

割り当てではありません。を使った比較==です。これを課題にするために、書いてみてください

ed.operator[j] = str[i];

表示される警告は、比較によって使用されていない値が生成されることを意味するため、ステートメントはプログラムに目に見える影響を与えません。おそらく副作用のあるものとして書き直したいというヒントです。

お役に立てれば!

于 2013-01-21T05:28:26.350 に答える