Operadores de incremento y decremento postfijo: ++ y --

Sintaxis

postfix-expression ++
postfix-expression --

Comentarios

C++ proporciona operadores de incremento y decremento tanto de prefijo como de postfijo. En esta sección, se describen solo los de postfijo. (Para más información, consulte Operadores de incremento y decremento prefijos). La diferencia entre los dos es que, en la notación postfija, el operador aparece después de postfix-expression, mientras que, en la notación prefija, el operador aparece antes de expression. En el ejemplo siguiente, se muestra un operador de decremento postfijo:

i++;

La aplicación del operador de incremento postfijo (++) tiene como efecto que el valor del operando se incrementa en una unidad del tipo adecuado. De manera similar, la aplicación del operador de decremento postfijo (--) tiene como efecto que el valor del operando se reduce en una unidad del tipo adecuado.

Es importante tener en cuenta que una expresión de incremento o decremento postfijo se evalúa como el valor de la expresión antes de aplicar el operador correspondiente. La operación de incremento o decremento se produce después de que se evalúa el operando. El problema surge solo cuando la operación de incremento o decremento de postfijo se da en el contexto de una expresión mayor.

Cuando se aplica un operador de postfijo a un argumento de función, no es seguro que el valor del argumento aumente o disminuya antes de que se pase a la función. Para obtener más información, vea la sección 1.9.17 del estándar C++.

Al aplicar el operador de incremento postfijo a un puntero en una matriz de objetos de tipo long, en realidad se agregan cuatro a la representación interna del puntero. Este comportamiento hace que el puntero, que antes hacía referencia al elemento n de la matriz, haga referencia al elemento (n+1).

Los operandos de los operadores de decremento e incremento postfijo deben ser valores L modificables (no const) de tipo aritmético o puntero. El tipo del resultado es el mismo que el de postfix-expression, pero ya no es un valor L.

Visual Studio 2017, versión 15.3 y posteriores (disponible en modo /std:c++17 y versiones posteriores): es posible que un operando de un operador de incremento o decremento postfijo no sea de tipo bool.

El código siguiente muestra el operador de incremento de postfijo:

// expre_Postfix_Increment_and_Decrement_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main() {
   int i = 10;
   cout << i++ << endl;
   cout << i << endl;
}

No se admiten las operaciones de incremento y decremento de postfijo en los tipos enumerados:

enum Compass { North, South, East, West );
Compass myCompass;
for( myCompass = North; myCompass != West; myCompass++ ) // Error

Consulte también

Expresiones postfijas
Operadores integrados de C++, precedencia y asociatividad
Operadores de incremento y decremento postfijos de C