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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de