Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: inewcl en 7 Noviembre 2016, 16:38 pm



Título: Debug c++
Publicado por: inewcl en 7 Noviembre 2016, 16:38 pm
[Error] lvalue required as left operand of assignment en el siguiente if:

if(0=(aux%4)) {
cout << " Infracciones detectadas : " << endl;   
analizar1(tiempo);
analizar2(tiempo);
analizar3(tipo);
  }


Código:
  int main() {
 
int ts;
int aux=0;
string codigo;

Marca *x= new Marca(codigo,ts);

vector<int>tiempo;
vector<string>tipo;

cout << " Ingrese datos " << endl;
while(cin >> codigo >> ts){

x->setTipo(codigo);
x->setTs(ts);

tipo.push_back(x->getTipo());
tiempo.push_back(x->getTs());

cout << tipo.at(aux) << " " << tiempo.at(aux) << endl;
aux=aux+1;
 


 
}

  if(0=(aux%4)) {
cout << " Infracciones detectadas : " << endl;   
analizar1(tiempo);
analizar2(tiempo);
analizar3(tipo);
  }


return 0;
};


Título: Re: Debug c++
Publicado por: kub0x en 7 Noviembre 2016, 16:42 pm
Al comparar un valor en una sentencia condicional el operador es "=="

Código
  1. if (dato==0){..}

Saludos!


Título: Re: Debug c++
Publicado por: engel lex en 7 Noviembre 2016, 16:53 pm
es como dice kub0x

solo quiero añadir la explicación del error para un futuro caso
Código:
lvalue required as left operand of assignment


el error dice
Código:
un lvalue es requerido como la parte izquierda del operador de asignación

un lvalue (locator value) es un objeto que tiene una dirección en memoria

el operador de asignación "=" funciona de una manera simple, copia el valor que esté a su derecha (o el valor representado por una variable a su derecha) dentro de la memoria del operando de la izquierda ...

en este caso el operando de la izquierda no es un lvalue, es "0" como "0" no tiene una posición en memoria propiamente dicha, sino es una constante, lanza ese error