Операторы добавочного и декремента postfix: ++--

Синтаксис

postfix-expression ++
postfix-expression --

Замечания

В C++ доступны префиксные и постфиксные операции инкремента и декремента. В этом разделе описываются только их постфиксные формы. (Дополнительные сведения см. в разделе Префикс добавочных и декрементных операторов.) Разница между двумя заключается в том, что в нотации постфикса оператор появляется после постфикса выражения, в то время как в нотации префикса оператор отображается перед выражением. В следующем примере показан оператор добавления послефикса:

i++;

Эффект применения оператора добавочного приращения (++) заключается в том, что значение операнда увеличивается на одну единицу соответствующего типа. Аналогичным образом, эффект применения оператора декремента постфикса (--) заключается в том, что значение операнда уменьшается на одну единицу соответствующего типа.

Важно отметить, что выражение постфикса инкремента или декремента оценивает значение выражения до применения соответствующего оператора. Операция увеличения или уменьшения происходит после оценки операнда. Эта особенность возникает, только когда постфиксная операция инкремента или декремента выполняется в контексте выражения.

Если же постфиксный оператор применяется к аргументу функции, то инкремент или декремент значения аргумента необязательно будет выполнен до его передачи в функцию. Дополнительные сведения см. в разделе 1.9.17 стандарта C++.

Применение оператора добавочного преобразования к указателю на массив объектов типа long фактически добавляет четыре в внутреннее представление указателя. Это поведение приводит к тому, что указатель, который ранее ссылался на n-йэлемент массива, ссылается на элемент (n+1)th.

Операнды для добавочных и постфиксных операторов декремента должны быть модифицируемыми (не const) l-значениями арифметического или указателя типа. Тип результата совпадает с типом выражения postfix, но он больше не является l-значением.

Visual Studio 2017 версии 15.3 и более поздних версий (доступных в /std:c++17 режиме и более поздних версиях): операнд оператора добавочного или декремента постфикса может не быть типомbool.

Ниже показан пример постфиксного оператора инкремента.

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

Постфиксные операции инкремента или декремента для типов перечисления не поддерживаются:

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

См. также

Постфиксные выражения
Операторы C++, приоритет и ассоциативность
Постфиксные операторы увеличения и уменьшения в C