前置++和後置++的計算效果均為運算元自加一。
當單獨乙個語句的時候沒有區別,但如果用在表示式中:
i++表示先取i的值做計算,再自加;
++i表示先自加,再取i的值做計算。
比如
int i =
2, j;
如果j = i++
;那麼先取i的值賦值給j,於是j值為2,i值再自加,i=
3。如果
j =++i;
那麼i先自加,得到i=
3,然後再取i值計算,j值為3.
舉個例子,深刻理解一下
#include
intmain()
讓我們先來了解一下cpu的執行原理
cpu執行具有指令週期
當電腦執行這一步命令a++的時候,電腦先將記憶體中a(6)的值放入暫存器中,然後將記憶體中的值+1,雖然最終暫存器中的a值是要和記憶體中的a值保持同步的,但是現在這一步指令執行完printf的時候,也只是printf了暫存器中的a值
所以在這個**中,輸出還是沒變的a等於6
printf
("%d\n"
,a++
);
而下乙個
printf
("%d\n"
,a);
輸出的是7
因為cpu更新了暫存器中的a值,將記憶體中的a值傳入暫存器中,然後列印出來的就是7了
而最後一條printf
printf
("%d\n"
,++a)
;
先增加a的值,再把值放到暫存器中,所以輸出是8
總結,++a是先增加a的值再放入暫存器中,而a++是先放進入暫存器再增加a值
希望以上內容對各位有所幫助,如果有說得不好的地方還請見諒!
前置 和後置 的區別
includeusing namespace std class int int const int operator int int operator private int m i ostream operator ostream os,const int i 可以使用 a而此時不能使用a 後置...
前置 和後置 的區別
a表示取a的位址,增加它的內容,然後把值放在暫存器中 a 表示取a的位址,把它的值裝入暫存器,然後增加記憶體中的a的值 前置 和後置 有4點不同 返回型別不同 形參不同 不同 效率不同 1 返回型別 前置 的返回型別是 後置 的返回型別const值。這意味著,前置 返回的是左值 可以被修改,也就是說...
前置 和後置 過載
1 前置 過載時沒有引數 而後置 過載時有引數。不會使用其引數,僅僅是區分用。可以理解為前置 後面有引數了,所以不需要引數 i 對應 operator i 對應 operator int 2 前置 需要返回引用 因為過載自加運算子後可以返回物件的引用,以方便在表示式中連續使用。而後置 返回的不是引用...