i 和 i的區別

2021-07-26 00:13:44 字數 1156 閱讀 4058

很多朋友在學習基礎的時候很容易遇到過這個問題,++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 可以。毫無疑問大家都知道第一點 不清楚的看下下面的實現 就了然了 我們重點說下第二點。首先解釋下什麼是左值 以下兩段引用自中文維基百科 右值引用 詞條 左值是對應記憶體中有確定儲存位址的物件的表示式...