En un programa C, recibe una advertencia: "Declaración sin efecto"
for-loop segmentation-fault (1)
Cuando intento compilar un programa en particular con -Wall
, GCC muestra la advertencia como:
expcal.c:66:5: warning: statement with no effect [-Wunused-value]
esta advertencia se refiere a la línea:
ed.operator[j] == str[i];
que se encuentra en el siguiente ciclo:
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++;
}
}
}
Sé que esta advertencia surgirá cuando haya algún problema con una declaración de asignación. ¿Qué hay de malo en el código anterior que haría que GCC generara tal advertencia?
La declaración
ed.operator[j] == str[i];
no es una tarea; es una comparación usando ==
. Para hacer de esto una tarea, intenta escribir
ed.operator[j] = str[i];
La advertencia que está recibiendo significa que la comparación produce un valor que nunca se usa, por lo que la declaración no tiene ningún efecto visible en el programa. Es una pista de que probablemente quiera volver a escribirlo como algo con un efecto secundario.
¡Espero que esto ayude!