Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ir a la navegación Ir a la búsqueda
Los Operadores de incremento y decremento son operadores unarios que agregan o sustraen
uno de sus operandos, respectivamente. Son normalmente implementados en lenguajes de
programación imperativos. En lenguajes tipo C es normal tener 2 versiones (pre- y post-) de cada
operador con semántica ligeramente diferente. En lenguajes tipo C, el operador de incremento es
escrito como ++ y el de decremento como --.
En lenguajes que admiten ambas versiones de los operadores, los operadores de pre-incremento
y pre-decremento aumentan (o disminuyen) sus operandos en 1, y el valor de la expresión es el
resultado del incremento (o decremento). En contraste, los operadores de post-incremento y post-
decremento incrementan (o decrementan) el valor de sus operandos en 1, pero el valor de la
expresión es el valor original de su operando antes del incremento (o decremento). En lenguajes
donde el incremento/decremento no es una expresión (Ej.: Go), sólo se necesita una versión (en
el caso de Go, solo post operadores).
Dado que el operador de incremento/decremento modifica su operando, el uso de más de una vez
dentro de la misma expresión puede producir resultados no definidos. Por ejemplo, en
expresiones tales como x − ++x, no está claro en qué orden se deben realizar la resta y el
operador de incremento. Situaciones como esta son aun peores cuando se aplican optimizaciones
por el compilador, lo que podría dar lugar a un orden de ejecución de operaciones diferente de lo
que pretende el programador.
Ejemplos
Los siguientes fragmentos de código C ilustran las diferencias entre operadores de pre y post
incremento/decremento:
int x;
int y;
// Operadores de incremento
x = 1;
y = ++x; // x es ahora 2, y es también 2
y = x++; // x es ahora 3, y es 2
// Operadores de decremento
x = 2;
y = x--; // x es ahora 1, y es 2
y = --x; // x es ahora 0, y es también 0
while (i < n)
sum += vec[i++]; // Post-incremento de i, que recorre
// los n elementos del vector
return sum;
}
Tenga en cuenta que estos ejemplos también funcionan en otros lenguajess de programación tipo
C, como C++, Java, y C#.
Lenguajes soportados
AWK Java
C JavaScript
C++ Objective-C
C# GNU Octave
D Perl
Go PHP