AjLearning
AjLearning 0.1    





Introducción a Java - Incrementar y decrementar

Curso Introducción a Java

    Anterior     Siguiente

Hay operadores unarios (heredados de C/C++), que nos permiten incrementar o decrementar una variable:

k++; // incrementa la variable k j--; // decrementa en uno la variable j Hay algo particular con estos operadores: se pueden usar antes o después de la variable. Expliquemos este funcionamiento.

Cuando escribimos
int k = 0; int j; j = k++; sucede lo siguiente: la expresión k++ se evalúa al valor de k ANTES de incrementar, es decir a cero. Luego se incrementa k, a uno. Pero el valor de la expresión k++ ha sido ya determinado en cero. Ese valor es el que se asigna a la variable j. En cambio:
int k = 0; int j; j = ++k; hubiera evaluado a la expresión ++k en valor 1, pues primero incrementa, y luego devuelve el valor de la variable ya incrementado. Es ciertamente sutil la diferencia, pero puede tener influencia en la forma que codificamos.

Las operaciones aisladas como:
k++; ++k; son entonces equivalentes a:
k = k + 1; Los elementos de un vector, cuentan como una variable:
valores[k]++; // incrementa el elemento k del arreglo valores Los corchetes indican que k es el subíndice del elemento a operar. Pero cuidado:
valores[donde()]++; siendo donde() una invocación a una función, es distinto de:
valores[donde()] = valores[donde()] + 1; porque en este segundo caso, la función se llama dos veces. Bien podría ser que la segunda vez devuelva o no el mismo valor, o que al ser llamada dos veces, provoque algún
efecto lateral.

El operador -- decrementa en uno el valor de una variable, y se comporta de igual forma que ++. Lo podemos escribir delante o después de una variable. No se admiten estos
operadores sobre expresiones no asignables, como:
(k+2)++; daría un error de compilación: estos operadores de incrementar/decrementar, deben ser aplicados a variables, a expresiones que puedan estar a la izquierda de una asignación.

Programado por Angel J. Lopez www.ajlopez.com