Compartilhar via


Operadores de incremento e decremento de prefixo: + + e -

++ unary-expression
–– unary-expression

Comentários

O operador de incremento de prefixo (++) adiciona um para que seu operando; Este valor incrementado é o resultado da expressão.O operando deve ser um valor-l não é do tipo const.O resultado é um valor de l do mesmo tipo que o operando.

O operador de decremento do prefixo () é parecido com o operador de incremento de prefixo, exceto que o operando é diminuído em um e o resultado é esse valor diminuído.

Quando um operador de prefixo é aplicado a um argumento de função, o valor do argumento não é garantido para ser aumentada ou diminuída, antes de serem passado para a função.Consulte a seção 1.9.17 no padrão C++ para obter mais informações.

Tanto o incremento de prefixo e sufixo decréscimo operadores afetam seus operandos.A principal diferença entre eles é quando o incremento ou decremento ocorre na avaliação de uma expressão.(Para obter mais informações, consulte operadores de decréscimo de incremento de sufixo e.) No formulário do prefixo, o incremento ou decremento ocorre antes que o valor é usado na avaliação de expressão, portanto, o valor da expressão é diferente do valor do operando.No formulário postfix, o incremento ou decremento ocorre depois que o valor é usado na avaliação de expressão, portanto, o valor da expressão é o mesmo que o valor do operando.Por exemplo, o seguinte 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;
}

Um operando do tipo integral ou flutuante é incrementada ou decrementada pelo valor inteiro 1.O tipo do resultado é o mesmo que o tipo de operando.Um operando do tipo de ponteiro é incrementado ou diminuído pelo tamanho do objeto, que ele se dirige.Um ponteiro incrementado aponta para o próximo objeto; um ponteiro diminuído aponta para o objeto anterior.

Porque increment e decrement operadores têm efeitos colaterais, usando expressões com operadores de incremento ou decremento em um macro pré-processador pode ter resultados indesejáveis.Considere este exemplo:

// 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 );
}

A macro se expande para:

k = ((++i)<(j))?(j):(++i);

Se i é maior que ou igual a j ou menos de j por 1, ela será incrementada duas vezes.

ObservaçãoObservação

Funções embutidas de C++ são preferidas a macros em muitos casos, pois elas eliminam os efeitos colaterais, como os descritos aqui e permitir que o idioma realizar a verificação mais completa de tipo.

Consulte também

Referência

Expressões com operadores unários

Operadores do C++

Precedência e associatividade de operadores

Conceitos

Operadores de incremento e decremento de prefixo