Foro de elhacker.net

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
  1. #include <iostream>
  2. main(){
  3.   int m = 45, n = 75;
  4.   cout<< "m = " << m<< " n = "<< n << endl;
  5.   // Aquí se entiende que m=45 y n=75
  6.   ++m;
  7.    --n;
  8.   cout<< "m = " << m <<", n = " << n << endl;
  9.  // Reseteamos los valores
  10.   m = 45;
  11.   n = 75;
  12.  
  13.   m++; // Incrementamos
  14.   n--; // Decrementamos
  15.   cout<< " m = "<< m <<", n = " << n << endl;
  16.   // Ahora te deberia salir m = 46 y n = 74
  17.   return 0;
  18. }

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

Código
  1. C = A + ++B;
Primero se incrementa B y despues se suma.

Código
  1. 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
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
  1.  // Reseteamos los valores
  2.   m = 45;
  3.   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^^