Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: RaquelAG en 27 Enero 2013, 22:18 PM

Título: duda de como usar el incremento en una operación
Publicado por: RaquelAG en 27 Enero 2013, 22:18 PM
Hola, verás, tengo una pequeña duda sobre la diferencia que puede tener el poner ++i o i++ en una operación, pues acabo de observar según un libro que no es lo mismo. Dejo aquí el ejemplo que plantea, para que lo podáis visualizar:

#include <iostream>
main(){
   int m = 45, n = 75;
   cout<< "m = " << m<< " n = "<< n << endl;
   // Aquí se entiende que m=45 y n=75
   ++m;
    --n;
   cout<< "m = " << m <<", n = " << n << endl;
   // Aquí también entiendo que m se ha incrementado enj 1 su valor y n ha
   // disminuido su valor, tal y como indica el libro
   m++;
   n--;
   cout<< " m = "<< m <<", n = " << n << endl;
   // Y es aquí cuando nada me cuadra, porque según el libro m=46 y n=73,
  // ¿Alguien me lo podría explicar? Gracias por todo
   return 0;
}
Título: Re: duda de como usar el incremento en una operación
Publicado por: amchacon en 27 Enero 2013, 22:36 PM
Realizan la misma operación: Incrementar uno. En el ejemplo que has puesto no se ve a simple vista porque has cambiado m y n previamente. Pero se puede ver si los vuelves a poner a estado normal:

Código (cpp) [Seleccionar]
#include <iostream>
main(){
  int m = 45, n = 75;
  cout<< "m = " << m<< " n = "<< n << endl;
  // Aquí se entiende que m=45 y n=75
  ++m;
   --n;
  cout<< "m = " << m <<", n = " << n << endl;
 // Reseteamos los valores
  m = 45;
  n = 75;

  m++; // Incrementamos
  n--; // Decrementamos
  cout<< " m = "<< m <<", n = " << n << endl;
  // Ahora te deberia salir m = 46 y n = 74
  return 0;
}


Ponerlo en sufijo o prefijo no supone ninguna diferencia en operaciones simples. La diferencia sucede en operaciones más complejas:

Código (cpp) [Seleccionar]
C = A + ++B;
Primero se incrementa B y despues se suma.

Código (cpp) [Seleccionar]
C = A + B++;

Se suma primero y despues se incrementa el resultado.

Título: Re: duda de como usar el incremento en una operación
Publicado por: RaquelAG en 27 Enero 2013, 22:54 PM
Sigo sin entenderlo, porque en el 2º paso del cout, no entiendo por qué dices que sigue siendo lo mismo, cuando antes de ello, ya se ha dicho que  ++m y --n, quedándome lo que se supone que tendría que salirme, m=46 y n=74. En el paso 3, según el libro, y es aquí donde no lo veo nada claro, antes de que salga en pantalla el reultado, dice que m++ y n--, pero que según mi guía, me tendría que salir que m=46 y n=73.


Gracias por contestar tan rápido, lo de las operaciones más complejas si lo entendí^^
Título: Re: duda de como usar el incremento en una operación
Publicado por: amchacon en 27 Enero 2013, 23:11 PM
Cita de: RaquelAG en 27 Enero 2013, 22:54 PM
Sigo sin entenderlo, porque en el 2º paso del cout, no entiendo por qué dices que sigue siendo lo mismo, cuando antes de ello, ya se ha dicho que  ++m y --n, quedándome lo que se supone que tendría que salirme, m=46 y n=74. En el paso 3, según el libro, y es aquí donde no lo veo nada claro, antes de que salga en pantalla el reultado, dice que m++ y n--, pero que según mi guía, me tendría que salir que m=46 y n=73.
Vuelve a mirar bien estas lineas que te he pasado:

Código (cpp) [Seleccionar]
 // Reseteamos los valores
  m = 45;
  n = 75;


Despues de la primera operación, vuelvo a dejar los dos valores como estaba y hago la segunda.

Simplemente quería enseñarte que ambas operaciones daban lo mismo, si lo compilas lo podrás comprobar:

(http://img19.imageshack.us/img19/8965/sinttuloknt.png)

En cuanto al libro, debe ser una errata. Te debería dar n = 47 y m = 73
Título: Re: duda de como usar el incremento en una operación
Publicado por: RaquelAG en 27 Enero 2013, 23:29 PM
¡Ya lo entendí! Muchas gracias por todo, ahora lo veo más claro^^