C 複習整理 i 和 i

2021-10-24 17:30:12 字數 1041 閱讀 5121

理論上++i更快,實際與編譯器優化有關,通常幾乎無差別。

//i++實現**為:                                    

int operator++(int)

//返回乙個int型的物件本身

// ++i實現**為:

int& operator++()

//返回乙個int型的物件引用

簡單從返回的值來說,i++返回的是i的值,而++i返回的是i+1的值。

從返回的東西來說,++i返回的是i的引用,i是什麼值反映出來就是什麼值。可以不停巢狀++(++i)。而且可以(++i) = 5;,就是把i的值改為5。可以&(++i)取i的位址空間。而i++就不行,就會報錯,因為i++相當於只是返回乙個值,沒有實體,就不能這樣做,也不能巢狀。

int i = 0;

cout<<++i《首先是函式的入棧順序從右向左入棧的,計算順序也是從右往左計算的,不過都是計算完以後在進行的壓棧操作,所以輸出是按順序的,只是計算順序是反的:

第一行輸出:首先執行++i,返回值是i,這時i的值是1,再次執行++i,返回值是i,得到i=2,將i壓入棧中,此時i為2,也就是壓入2,2;因為++i返回的是引用,所以前乙個的i是2.

第二行輸出:首先執行i++,返回值是原來的i,也就是2,再執行++i,返回值是i,依次將2,4壓入棧中得到輸出結果

第三行:首先執行i++,返回值是原來的4,再執行i++返回值是原來的5,依次將4,5壓入棧中得到輸出結果

第四行:首先執行++i,返回i,此時i為7,再執行i++,返回值是原來的7,此時i為9,依次將i,8也就是9,8壓入棧中,得到輸出結果。

理解的時候就是++i是把i壓入棧,i是什麼值就是什麼值。i++是把傳入時i的值壓入棧,是加之前的值,且不會改的。

c語言中 i 和 i 問題!

關於 i 和 i 一 簡單地說,單獨使用時,就是 i i 1 二 a i,相當於 i i 1,a i 先i i 1,再使用i的值 a i 相當於 a i,i i 1 先使用i的值,再i i 1 前者是先自增,後賦值 後者是先賦值,後自增。三 單獨使用時,i 的效率要比 i 效率高。1 為什麼?在內建...

MySQL複習筆記I

mysql複習筆記i sql 檢視包含哪些資料庫 show databases 使用名為 test 的資料庫 use test 最簡單的 tinyint 預設是 3 個位元組,但可以顯式地指定為 1 個位元組 unsigned 須跟在後面 create table tb0 id int not nu...

C語言中i 和 i的區別

1 字首 i 變數型別可以是基本型別也可以是指 指標型別。i使變數i的值增加 1 並以i的新值作為表示式 i 運算的結果,該表示式返回的就是變數i增加1以後的值 i等價於i i 1 2 字尾 i i 的意思是首先求得整個表示式的值,該表示式的值就是變數i原來的值。在確定了表示式的結果以後,i的值再增...