-
1 # 進擊的巨猿
-
2 # Kobe096
這是一個大部分開發語言都會接觸到的語法。那麼就舉例說明一下吧。
以C語言為例,int main(){int b = 0; int i = 1;
b = ++i; return b;} 此時b的值為2,因為++i是先對i進行加1,再賦值給b。
int main(){int b = 0; int i = 1; b = i++; return b;}此時b的值為1,因為i++是先賦值給b,再對i加1。
總之,++在i前就是先自增再賦值,反之就是先賦值再自增。
-
3 # 程式設計師黑洞
補充一下,其實除了語法上的不同,還有一個不同,即編譯器級別也有差異。
++i ;
即 在 i變數的記憶體空間自增1。
而 i++ 是先在棧上新申請一個臨時變數t,即新用一塊記憶體。把i 值複製給t。
這個微小差異對執行速度有影響。
其它無礙。
從編譯器的視角看問題,你會感覺很不一樣。
-
4 # 子更
先看看基本區別:
i++ :先在i所在的表示式中使用i的當前值,後讓i加1
++i :讓i先加1,然後在i所在的表示式中使用i的新值
++i相當於下列程式碼
i += 1;
return i;
i++相當於下列程式碼
j = i;
i += 1;
return j;
當然如果編譯器會將這些差別都最佳化掉,那麼效率就都差不多了。
++i 與 i++ 的區別
1、++i 的用法(以 a=++i ,i=2 為例)
先將 i 值加 1 (也就是 i=i+1 ),然後賦給變數 a (也就是 a=i ),
則最終 a 值等於 3 , i 值等於 3 。
所以 a=++i 相當於 i=i+1 ,a=i
2、i++ 的用法(以 a=i++ ,i=2 為例)
先將 i 值賦給變數 a (也就是 a=i ),然後 i 值加 1 (也就是 i=i+1 ),
則最終 a 值等於 2 ,i 值等於 3 。
所以 a=i++ 相當於 a=i , i=i+1
3、++i 與 i++
a=++i 相當於 i++ , a=i
a=i++ 相當於 a=i , i++
4、++i 與 i++ 單獨使用時,相當於 i=i+1
如果賦給一個新變數,則 ++i 先將 i 值加 1 ,而 i++ 先將 i 賦給新變數。
-
5 # 宋v第三幕
i++和++i的區別如下:
i++是先賦值,然後再自增;++i是先自增,後賦值。
用程式碼表示就是:
若 a = i++; 則等價於 a=i;i=i+1;
而 a = ++i; 則等價於 i=i+1;a=i;
實際上呢
i++:是先把i拿出來使用,然後再+1;
++i :是先把i+1,然後再拿出來使用;
-
6 # 散居獵人
把精力放在建模和演算法實現上。
非要弄明白?看++位置就知道了。
k=n++,等效為 k=n 和 n=n+1,兩句合為一句。
k=++n,等效為 n=n+1和k=n,兩句合為一句。
回覆列表
舉個例子說下吧,比如:
j=++i
j=i++
上述兩個語句,語錄一相當於
i=i+1
j=i
語錄二相當於
j=i
i=i+1
區別在於++在前是值先自增,再參與運算,++在後是值先參與運算,之後再自增