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