很多朋友在學習基礎的時候很容易遇到過這個問題,++i和i++到底有什麼區別?
下面來詳細解釋一下。
首先i++和++i單獨為一條語句時沒有任何區別;
例如:
int i=1;
i++; //單獨為一條語句
system.out.println(「i=」+i);//i=2
int i=1;
++i; //單獨為一條語句
system.out.println(「i=」+i);//i=2
這種情況無任何區別,最終的i都會自增1。
但是, 當i++與++i參與到另一條語句的執行時就會有區別,總的可以概括為i++為先參與運算之後再自身加1,++i為先自身加1再參與其他的運算,
例: int i=3;
int j=i++;
system.out.println(「i=」+i);//結果為i=4
system.out.println(「j=」+j);//結果為j=3
這條語句就已經不是i++在單獨執行了,因為它參與了j的賦值,所以它會先參與j的賦值運算然後再自身加一,也就是說,先把自己原有的值3,拿出來賦值給j,之後自己在加1,這樣列印的結果就是j=3,x=4。
下面再看一下++i的用法。
int i=3;
int j=++i;
system.out.println(「i=」+i);//結果為i=4
system.out.println(「j=」+j);//結果為j=4
這條語句中的++i同樣參與了y的賦值,不同的是這裡的++i會先自己加1之後再把值賦給y,所以這條語句列印的結果就是y=4,i=4。
但是值得注意的是無論是先參與運算還是先自身加1再參與運算,最終i的值都會加1。
下面來個小練習:
判斷最終的a、b、c各是多少?
int a = 15;
int b = 15;
int c = 15;
a = ++b; //a=16,b=16,c=15
c = a–; //a=15,b=16,c=16
b = ++a; //a=16,b=16,c=16
a = c–; //a=16,b=16,c=15
最終結果為:a=16,b=16,c=15
i和i 的區別
大家都應該知道i 和 i的區別,前者是先使用i的值,然後再增加1,而後者是先增加1然後再使用i的值。但是i 和 i那個更好呢?我們實現角度來看 前者是將i值加1後賦給i,然後返回i本身 而後者是先用個臨時變數儲存i值,然後將i值加1賦給i,然後返回臨時變數的值。內建資料型別他們的效率差不多,看他們的...
i 和 i的區別
當年上c 課的時候對於i 和 i的區別就稀里糊塗。後來沒注意也沒出過什麼問題。但是這個問題還是應該搞清楚。假如有乙個vector,值為 1,2,3,4,5,6,7 用以下程式輸出 i 0 while i 7 i 0 while i 7 cout beforei v i endl cout befor...
i 和 i的區別
i 與 i 的主要區別有兩個 1 i 返回原來的值,i 返回加1後的值。2 i 不能作為左值,而 i 可以。毫無疑問大家都知道第一點 不清楚的看下下面的實現 就了然了 我們重點說下第二點。首先解釋下什麼是左值 以下兩段引用自中文維基百科 右值引用 詞條 左值是對應記憶體中有確定儲存位址的物件的表示式...