關於自增自減操作符

2021-06-08 00:31:57 字數 562 閱讀 2114

c/c++中自增自減運算子相信是不少人的乙個困擾,這個問題也一直困擾著我,今天再次翻開書本來看了看,有了些新的體會,所以在這裡記錄下來,同時也與那些像我一樣被困擾的人分享,程式設計大牛可以繞道了,或者有什麼不對的地方請大牛們指正。

以++為例,如下程式輸出結果是什麼  

int a=0,j=1;

a=j++;

cout《估計有人會說a=2,j=2;恭喜你答錯了;

有人會說a=1; j=2,這是正確的結果,但是答對的人不一定完全知道為什麼,可能只是記得,遇到++的時候,先賦值,再自增。

其實並不是這樣的,這種想法是錯誤的。我們去查每一本c/c++工具書,都會找到:++操作符具有右結合性,++優先順序高於=;以此看來應該是先做++,在做賦值,也就是結果應該是 a=2,j=2;  但實際並不是,這不是自相矛盾嗎?為什麼會有這樣的結果呢?

我們去查c++primer,自增自減運算子章節中,有個灰色背景的建議,其中寫道:「後置操作符必須先儲存運算元原來的值,以便返回未加1之前的值作為操作的結果。」因此我們就明白了為什麼會是這個結果,++確實是在先先於賦值操作符 = 計算的,但是j++的返回值卻是未加1之前的值。

自增 和自減 操作符

自增操作符和自減操作符經常要在我們自定義的類型別中使用到,而使用時經常會出現問題。現把自己在學習的過程中的 拿出來看一下,也是c primer中的例子如下 ifndef check ptr define check ptr include using namespace std class chec...

自增和自減操作符

毫無疑問,自增 和自減 操作符為物件加1或減1操作提供了方便簡短的實現方式。程式設計中的宗旨 簡潔即美 它們有前置和後置兩種使用形式 int i 0,j j i j 1,i 1 prefix yields incremented value j i j 1,i 2 postfix yields un...

自增 自減 解引用操作符

class int 友元函式,可以訪問類私有成員。返回值為引用型別,因為有時需要這樣的操作 cout int yyy friend ostream operator ostream os,const int i public int int i m i i prefix int operator p...