Opérateurs suffixés d’incrémentation et de décrémentation : ++ et --

Syntaxe

postfix-expression ++
postfix-expression --

Notes

C++ fournit des opérateurs d'incrémentation et de décrémentation préfixés et suffixés. Cette section décrit uniquement les opérateurs d'incrémentation et de décrémentation suffixés. (Pour plus d’informations, consultez Opérateurs préfixés d’incrémentation et de décrémentation.) La différence entre les deux tient au fait que dans la notation suffixée, l’opérateur apparaît après postfix-expression, alors que dans la notation préfixée, l’opérateur apparaît avant expression. L'exemple suivant montre un opérateur d'incrémentation suffixé :

i++;

L’application de l’opérateur d’incrémentation suffixé (++) a pour effet d’augmenter la valeur de l’opérande d’une unité du type approprié. De même, l’application de l’opérateur de décrémentation suffixé (--) a pour effet de réduire la valeur de l’opérande d’une unité du type approprié.

Il est important de noter qu’une expression d’incrémentation ou de décrémentation suffixée prend la valeur de l’expression avant l’application de l’opérateur respectif. La prise en compte de l’opération d’incrémentation ou de décrémentation a lieu après l’évaluation de l’opérande. Ce problème survient uniquement lorsque l'opération d'incrémentation ou de décrémentation suffixée intervient dans le contexte d'une plus grande expression.

Lorsqu'un opérateur suffixé est appliqué à un argument de fonction, il n'est pas garanti que la valeur de cet argument sera incrémentée ou décrémentée avant d'être passée à la fonction. Pour plus d'informations, reportez-vous à la section 1.9.17 de la norme C++.

L’application de l’opérateur d’incrémentation suffixé à un pointeur vers un tableau d’objets de type long ajoute en fait quatre à la représentation interne du pointeur. En raison de ce comportement, le pointeur, qui référençait le nième élément du tableau, référence à présent le (n+1)ième élément.

Les opérandes des opérateurs d’incrémentation et de décrémentation suffixés doivent être des expressions l-value modifiables (et non const) de type arithmétique ou pointeur. Le type du résultat est le même que celui de postfix-expression, mais il ne s’agit plus d’une expression l-value.

Visual Studio 2017 version 15.3 et versions ultérieures (disponible en mode /std:c++17 et versions ultérieures) : l’opérande d’un opérateur d’incrémentation ou de décrémentation suffixé ne doit pas être de type bool.

Le code suivant illustre l'opérateur d'incrémentation suffixé :

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

Les opérations d'incrémentation et de décrémentation suffixées sur les types énumérés ne sont pas prises en charge :

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

Voir aussi

Expressions suffixées
Opérateurs intégrés, priorité et associativité C++
Opérateurs suffixés d’incrémentation et de décrémentation C