今天在調式代碼時發現了一個問題。
          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 湘江夜游神 閱讀(137) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          Locations of visitors to this page

          主站蜘蛛池模板: 浦城县| 竹北市| 富锦市| 维西| 新巴尔虎左旗| 阜阳市| 新平| 开鲁县| 石城县| 深圳市| 雷波县| 大方县| 儋州市| 牙克石市| 武义县| 怀集县| 永嘉县| 门头沟区| 高邑县| 松桃| 雅江县| 华容县| 本溪市| 玛曲县| 綦江县| 西乌珠穆沁旗| 平度市| 玉门市| 武穴市| 额尔古纳市| 开阳县| 乌拉特后旗| 迁西县| 康平县| 弋阳县| 华池县| 崇信县| 石楼县| 保德县| 镇赉县| 垣曲县|