¿Qué es post-incremento y post-decremento? ¿Para qué sirven?
Bien empecemos definiendo que es post, post o pos es un prefijo que significa después, teniendo eso claro ahora definamos que hace el post-incremento/decremento.
Post-incremento/decremento: Incrementa la variable o decrementa la variable según sea el caso después de evaluar la expresión. (NO hay que confundir con pre-incremento/decremento). Vamos a explicarlo más a fondo observa este ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main() { int i=1; i=i+1; i++; // esto es lo mismo que la operación de arriba cout << i << endl; return 0; } |
Aquí podemos observar que la operación i=i+1 es igual a usar un post-incremento lo que dice el programa es que i va valer 1 después le suma 1 a la i entonces el nuevo valor es 2, luego se hace el post-incremento que hará que al final nos muestre en pantalla que la i va tener un valor igual a 3.
Este ejemplo es un post-incremento, está representado de esta manera i++, donde la variable en este caso es la i y el incremento es ++ después de la variable. El post-decremento se representa de la misma forma pero usando el signo de diferencia o resta dos veces justo así: i– –.
Entonces podemos concluir que se representan de la siguiente manera:
a++ (esto es un post-incremento donde a es la variable)
a– — (esto es un post-decremento donde a es la variable)
Ahora observemos el siguiente ejemplo:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main() { int i=1, j; j=i++; cout << j << endl; return 0; } |
Ahora analicemos que hace el programa, muchos se confunden y pensarían que al correr el programa j tendría un valor igual a 2 pero no es así el valor de j al correr la consola es igual a 1, por eso NO hay que confundir el pre-incremento/decremento ya que es algo usual al empezar a utilizar estas funciones, vamos a aclarar como funciona este programa. Observemos la expresión siguiente:
1 |
j=i++; |
Lo que sucede en la expresión anterior es que primero se evalúa la i con el valor actual que es 1 y luego una vez devuelta y puesta en la j entonces se incrementa, se podría decir que es lo mismo que:
1 2 |
j=i; i=i+1; |
Ahora veamos el ejemplo con un post-decremento para entender un poco más de que va esto:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main() { int i=1, j; j=i--; cout << j << endl; return 0; } |
Bien aquí en vez de utilizar un post-incremento se uso un post-decremento pero igual que el ejemplo anterior al correr el programa j va tener un valor igual a 1. ¿Pero por qué?. Bueno viene siendo lo mismo primero j toma el valor de 1 ya que i vale 1, la j no se modifica solo toma el valor y luego una vez devuelta y puesta en la j entonces se decrementa.
1 |
j=i--; |
Lo de arriba y lo de abajo representa lo mismo.
1 2 |
j=i; i=i-1; |
Veamos el siguiente ejemplo:
1 2 |
int a=0; int b=a++; |
Aquí hace a=1 y b=0, esto significa que b obtuvo el valor de a anterior al incremento.
Espero este artículo sea útil para usted.