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 回答