当我尝试使用-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产生这样的警告?
答案 0 :(得分:11)
声明
ed.operator[j] == str[i];
不是作业;这是使用==
的比较。要将此作为作业,请尝试编写
ed.operator[j] = str[i];
您获得的警告意味着比较产生了一个从未使用过的值,因此该语句对程序没有任何明显的影响。这是一个提示,你可能想把它重写为具有副作用的东西。
希望这有帮助!