前置 和後置 的區別

2021-10-04 08:05:03 字數 976 閱讀 3701

前置++和後置++的計算效果均為運算元自加一。

當單獨乙個語句的時候沒有區別,但如果用在表示式中:

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 前置 需要返回引用 因為過載自加運算子後可以返回物件的引用,以方便在表示式中連續使用。而後置 返回的不是引用...