今天在寫題的時侯在++i與i++上遇到了麻煩,具體就是我在寫乙個迴圈語句時因為沒有弄清楚i++與++i的區別而導致的錯誤。
之前對於i++與++i的使用都只侷限於如下方式:
for(j=2; j<=9; j++)
for(j=2; j<=9; ++j)
這樣使用好像兩者並沒有什麼區別。
然而當我像下面這樣用時卻出了問題:
for(j=i,t=2; j<=n; j=i*(t++))
for(j=i,t=2; j<=n; j=i*(++t))
經過手動測試之後我發現了原因:
++i語句之所以把『+』放在前面就是因為它是先進行加一;
而i++卻剛好與之相反;
所以當單獨使用的時候兩者都是進行了i+1的運算,但一旦你將其賦給其他變數時就會出現偏差。比如:
t=i++(i=0)//此時的i先賦值給變數t再進行加一的操作,所以t=0,i=1
t=++i(i=0) //此時的i先進行加一的操作再賦值給變數t,所以t=1,i=1
i 與 i的區別
public class test static int x,y public static void main string args public static void mymethod 選項 compiletime error prints 1 prints 2 prints 3 print...
談談i 與 i的區別
在通常情況下i 與 i是一樣的,可以等價替換的,例如在for迴圈裡 for int i 0 i 10 i 與for int i 0 i 10 i 是一樣的 但是也用不同的地方 int flag 0 for int i 0 i 10 i num flag i 先賦值 後flag加一 與for int ...
筆記 i 與 i的區別
i 是先進行了賦值在自增 首先i 1因為是先賦值所以會將1賦值給j,所以j 1i 自增,也就是i 2,會將值賦給i,所以i 2int i 1 int j i system.out.println j j 輸出 j 1 system.out.println i i 輸出 i 2 i是先自增在進行賦值 ...