Autor
|
Tema: duda de como usar el incremento en una operación (Leído 2,992 veces)
|
RaquelAG
Desconectado
Mensajes: 6
|
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; }
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
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: #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 = A + ++B;
Primero se incrementa B y despues se suma. C = A + B++;
Se suma primero y despues se incrementa el resultado.
|
|
« Última modificación: 27 Enero 2013, 22:42 pm por amchacon »
|
En línea
|
|
|
|
RaquelAG
Desconectado
Mensajes: 6
|
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í^^
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
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: // 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
|
|
|
En línea
|
|
|
|
RaquelAG
Desconectado
Mensajes: 6
|
¡Ya lo entendí! Muchas gracias por todo, ahora lo veo más claro^^
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda sobre como usar el editor hexadecimal
Ingeniería Inversa
|
elipse
|
8
|
13,124
|
17 Agosto 2006, 19:03 pm
por _GeMiNi_
|
|
|
como incremento mi internet motorola sb4200
Redes
|
abys
|
2
|
2,836
|
7 Mayo 2010, 16:01 pm
por Martin-Ph03n1X
|
|
|
Como hacer esta operación con Ubuntu 10.04
GNU/Linux
|
Meta
|
2
|
3,440
|
12 Mayo 2010, 21:17 pm
por Meta
|
|
|
Pequeña duda informes access añadir campo con operacion
Bases de Datos
|
Anonymous250
|
4
|
3,864
|
12 Enero 2012, 15:49 pm
por Anonymous250
|
|
|
[Duda] Usar un SSD como cache para el HDD
Hardware
|
raul_samp
|
2
|
4,791
|
19 Mayo 2012, 23:06 pm
por raul_samp
|
|