Operadores de incremento y decremento de prefijo: ++ y --
++ unary-expression
–– unary-expression
Comentarios
El operador de incremento de prefijo (++) agrega una al operando; este valor incrementado es el resultado de la expresión.El operando debe ser un valor l no de constescrito.El resultado es un valor l del mismo tipo que el operando.
El operador de decremento de prefijo (--) es análogo al operador de incremento de prefijo, salvo que el operando es disminuido por uno y el resultado es este valor disminuido.
Cuando se aplica un operador prefijo a un argumento de la función, el valor del argumento no se garantiza que incrementar o para ser disminuido antes de que pase a la función.Vea la sección 1.9.17 en el estándar de C++ para obtener información.
El prefijo y el sufijo aumentan los operadores y decremento afectan a sus operandos.La diferencia clave entre ellos es cuando el incremento o decrement tiene lugar en la evaluación de una expresión.(Para obtener más información, vea Operadores de incremento y decremento postfijo.) En el formulario de prefijo, el incremento o decrement tiene lugar antes de que el valor se usa en la evaluación de la expresión, por lo que el valor de la expresión es diferente del valor del operando.En el formulario de sufijo, increment o decrement tiene lugar después de que el valor se usa en la evaluación de la expresión, por lo que el valor de la expresión es igual que el valor del operando.Por ejemplo, el siguiente programa imprime “++i = 6”:
// expre_Increment_and_Decrement_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
int i = 5;
cout << "++i = " << ++i << endl;
}
Un operando de entero o la flotante tipo se incrementa o disminuido por el valor entero 1.El tipo del resultado es el mismo que el tipo del operando.Un operando de tipo de puntero es superior o reduce el tamaño del objeto que resuelve.Puntos incrementados de un puntero al siguiente objeto; puntos disminuidos de un puntero al objeto anterior.
Dado que los operadores de incremento y decremento tienen efectos secundarios, utilizando expresiones con los operadores de incremento y decremento en macro de preprocesador puede producir resultados no deseados.Considere este ejemplo:
// expre_Increment_and_Decrement_Operators2.cpp
#define max(a,b) ((a)<(b))?(b):(a)
int main()
{
int i = 0, j = 0, k;
k = max( ++i, j );
}
La macro expanda:
k = ((++i)<(j))?(j):(++i);
Si i es mayor o igual j o menor que j por 1, se incrementa dos veces.
[!NOTA]
Las funciones inline de C++ son preferibles a macros en muchos casos porque eliminan efectos secundarios como los descritos aquí, y permiten que el lenguaje realice más comprobación de tipo completa.
Vea también
Referencia
Expresiones con los operadores unarios
Operador Prioridad y Asociatividad