共用方式為


遞增和遞減運算子的前置詞: + + 和-

++ unary-expression
–– unary-expression

備註

前置遞增運算子 (++) 會加上陰影給其運算元。 這個遞增的值是運算式的結果。 運算元必須是左值不屬於類型 const。 結果是相同的型別,運算元是左值。

前置的遞減運算子 (-) 程序類似會前置遞增運算子的運算元會減少 1,而且結果是遞減後的值。

當前置運算子套用至函式引數時,不保證會依遞增或遞減後,才傳遞至函式的引數的值。 請參閱章節 1.9.17 在 C++ 標準,如需詳細資訊。

前置詞和後置遞增和遞減運算子會影響其運算元。 遞增或遞減發生,在評估運算式時的主要差異。 (如需詳細資訊,請參閱後置的遞增和遞減運算子。) 首碼形式的增量或減量之前發生在評估運算式,會使用的值,所以運算式的值是不同於運算元的值。 在後置表單中,遞增或遞減之後發生在評估運算式,會使用的值,所以運算式的值是運算元的值相同。 例如,下列程式列印"++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;
}

一個整數或浮點型別的運算元是依遞增或遞減整數值 1。 結果的型別是運算元的型別相同。 指標型別的運算元針對物件的大小是依遞增或遞減。 遞增的指標正在指出下一個物件。 遞減指標會指向前一個物件。

因為遞增和遞減運算子在使用中的遞增或遞減運算子的運算式有副作用, 前置處理器巨集造成非預期的結果。 請考量以下範例:

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

巨集擴充為:

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

如果i大於或等於j或小於j加 1,它會增加兩次。

注意事項注意事項

C + + 內嵌函式會優先於 [巨集作用於許多情況下,因為副作用,例如,此處所述,並允許用來執行更完整的型別檢查的語言。

請參閱

參考

一元 (unary) 運算子的運算式

C + + 運算子

運算子優先順序和順序關聯性

概念

前置遞增和遞減運算子