duda de como usar el incremento en una operación

Iniciado por RaquelAG, 27 Enero 2013, 22:18 PM

0 Miembros y 1 Visitante están viendo este tema.

RaquelAG

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;
}

amchacon

#1
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.

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

RaquelAG

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í^^

amchacon

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:



En cuanto al libro, debe ser una errata. Te debería dar n = 47 y m = 73
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

RaquelAG

¡Ya lo entendí! Muchas gracias por todo, ahora lo veo más claro^^