今天在調式代碼時發現了一個問題。
for (int i=0;i<5 ;i++){}與for (int i=0;i<5 ;++i){}
是一樣的。
在書本上,++i是先自加,i++是后自加。
int i = 0;
int x = i++;
很明顯x得到的值是0,然后i自加的值是1。
int i = 0;
int x = ++i;
這一段中x的值為1。
問題處在哪里呢?
原來是for循環的執行過程上有些不同。
例如:for(exp 1;exp 2; exp 3){ exp 4;}
它的過程是這樣的,首先循環是執行exp 1,完成它的初始化,再判斷exp 2是否為真,若為真,則執行循環體exp 4,執行完后再回到exp 3,計算并修改循環條件,第一輪循環就結束了。第二輪的開始是從exp 2開始,若為真,繼續執行exp 4,然后回到exp 3。當再次進入exp 2時,表達式為false,跳出循環體。
問題就是出在這里,exp 3相當與一個計數器的工作,當執行完畢后exp 3無論是++i還是i++,其結果都是一樣的。
posted on 2007-10-30 15:59
湘江夜游神 閱讀(133)
評論(0) 編輯 收藏