Index et opérateurs d'incrémentation de préfixe : ++ et --
++ unary-expression
–– unary-expression
Notes
L'opérateur d'incrémentation de préfixe (++) ajoute un à son opérande ; cette valeur est incrémentée le résultat de l'expression.L'opérande doit être une l-value pas de type const.Le résultat est une l-value du même type que l'opérande.
l'opérateur de pré-décrémentation (--) est analogue à l'opérateur d'incrémentation de préfixe, sauf que l'opérande est décrémenté par il et le résultat est cette valeur décrémentée.
Lorsqu'un opérateur préfixé est appliqué à un argument de fonction, la valeur de l'argument n'est pas garanti être incrémentée ou décrémentée avant d'être passée à la fonction.Consultez la section 1.9.17 dans la norme C++ pour plus d'informations.
Le préfixe et la post-incrémentation les opérateurs d'incrémentation et de décrémentation affectent leurs opérandes.La différence principale entre eux est lorsque l'incrément ou décrémentation se produit dans l'évaluation d'une expression.(Pour plus d'informations, consultez Post-incrémentation et opérateurs d'incrémentation.) Dans le formulaire de préfixe, l'incrément ou décrémentation se produit avant que la valeur soit utilisée dans l'évaluation de l'expression, donc la valeur de l'expression est différente de la valeur de l'opérande.Dans le formulaire de suffixe, un incrément ou décrémentation a lieu après que la valeur soit utilisée dans l'évaluation de l'expression, donc la valeur de l'expression est identique à celle de l'opérande.par exemple, le programme suivant 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 opérande de type intégral ou flottantes est incrémenté ou décrémenté par la valeur 1 entière.Le type du résultat est le même que le type d'opérande.Un opérande de type pointeur est incrémenté ou décrémenté par la taille de l'objet qu'il adresse.Points incrémentés d'un pointeur vers l'objet suivant ; points décrémentés d'un pointeur vers l'objet précédent.
Étant donné que les opérateurs d'incrémentation et de décrémentation avoir des effets secondaires, à l'aide de expressions avec l'incrément ou les opérateurs d'incrémentation dans macro de préprocesseur peut avoir des résultats indésirables.Considérez cet exemple :
// 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 développe :
k = ((++i)<(j))?(j):(++i);
Si i est supérieure ou égale à j ou moins qu' j par 1, il est incrémenté deux fois.
[!REMARQUE]
Les fonctions inline C++ sont préférables aux macros dans de nombreux cas car elles éliminent des effets secondaires tels que ceux décrits ici, et permettent au langage pour effectuer plus vérification de type terminée.
Voir aussi
Référence
Expressions avec des opérateurs unaires
Priorité des opérateurs et d'associativité