Dhasneem
Dhasneem

Reputation: 4007

In a C program, getting warning: "Statement with no effect"

When I am trying to compile a particular program with -Wall, GCC is showing the warning as:

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

this warning is referring the line:

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

which is found in the following loop:

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

I know that this warning will arise when there's something wrong with an assignment statement. What is wrong in the above code that would cause GCC to generate such a warning?

Upvotes: 2

Views: 21111

Answers (1)

templatetypedef
templatetypedef

Reputation: 372972

The statement

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

isn't an assignment; it's a comparison using ==. To make this an assignment, try writing

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

The warning that you're getting means that the comparison produces a value that's never used, so the statement doesn't have any visible effect on the program. It's a hint that you probably want to rewrite it as something with a side-effect.

Hope this helps!

Upvotes: 11

Related Questions