1. ホーム
  2. c

[解決済み] C言語プログラムで、警告が表示される。"ステートメントに効果がありません"

2022-02-18 01:58:56

質問

あるプログラムをコンパイルする際に -Wall という警告が表示されます。

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がこのような警告を発生させるような、上のコードのどこがおかしいのでしょうか?

解決方法は?

ステートメント

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

を使った比較です。 == . これを課題にするには、次のように書いてみてください。

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

この警告は、比較が決して使用されない値を生成することを意味し、その文はプログラム上で目に見える効果を持ちません。 これは、おそらく副作用のあるものに書き直した方が良いというヒントです。

お役に立てれば幸いです。