<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java之路

    深入理解i++和++i

     1 int i=0;
     2 int j=i++;//i=1;j=0;
     3 
     4 int i=0;
     5 int j=++i;//i=1;j=1;
     6 
     7 int i=0;
     8 i=i++;//i=0;
     9 
    10 int i=0;
    11 i=++i;//i=1;



    i++:
    iconst_0
    istore_1
    iload_1
    iinc 1,1
    istore_1

    ++i:
    iconst_0
    istore_1
    iinc 1,1
    iload_1
    istore_1





    總結(jié):
    i=i++沒(méi)有意義,不要在代碼里出現(xiàn)為好,以免誤導(dǎo)他人。也不建議用i=++i。

    posted on 2009-07-25 18:57 小良良 閱讀(1712) 評(píng)論(7)  編輯  收藏

    評(píng)論

    # re: 深入理解i++和++i 2009-07-25 21:11 ahx

    int i=0;
    i=i++;//i=0;

    結(jié)果為1 是么?
    編譯器:
    gcc version 4.3.3
    代碼:
    #include <stdio.h>

    int main(int argc , char** argv){
    int i = 0;
    i = i ++;
    fprintf(stdout,"%d",i);
    }
    運(yùn)行結(jié)果:
    1
      回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i 2009-07-25 21:21 ahx

    抱歉,沒(méi)有注意“Java之路”
    編譯器:javac 1.6.0_14
    代碼:
    class Tt{
    public static void main(String[] args){
    int i = 0;
    i = i++;
    System.out.println(i);
    }
    }
    結(jié)果:0  回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i 2009-07-25 21:43 小良良

    @ahx
    多才!  回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i 2009-07-25 23:50 Jacky-Q

    常識(shí)吧。講運(yùn)算符時(shí)都會(huì)提到這一點(diǎn)。  回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i 2009-07-26 06:51 feenn

    @ahx
    正確。先執(zhí)行賦值操作,然后執(zhí)行增量操作。  回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i 2009-07-26 15:16 木糖醇

    @ahx

    很希望在給多種代碼演示的時(shí)候說(shuō)明下是哪種語(yǔ)言..
    我們新手看起來(lái)就沒(méi)那么懵了...
    也可以長(zhǎng)長(zhǎng)知識(shí)...謝謝!  回復(fù)  更多評(píng)論   

    # re: 深入理解i++和++i[未登錄](méi) 2009-07-26 22:12 lanxiazhi

    我來(lái)具體說(shuō)明:
    int i=0;
    i=i++;
    上述兩行java代碼bytecode如下:
    iconst_0 //把常量0放到堆棧
    istore_1 //把堆棧上的數(shù)(上面那個(gè)0)放到存儲(chǔ)位置1,也就是i的存儲(chǔ)位置,所以i的值就是0了
    iload_1 //加載位置1上的整數(shù)值到棧頂,就是i,因此棧頂?shù)闹凳?
    iinc 1,1 //把位置1的數(shù),也就是i,自增1,因此i變成了1(注意:iinc指令不會(huì)操作堆棧)
    istore_1 //把棧頂?shù)哪莻€(gè)數(shù),也就是0,存到位置1,因此i的值是0.

    int i=0;
    i=++i;
    -->
    iconst_0 //把常量0放到棧頂
    istore_1 //把堆棧上的數(shù)(上面那個(gè)0)放到存儲(chǔ)位置1,也就是i的存儲(chǔ)位置,所以i的值就是0了,棧頂值不變
    iinc 1,1 //把位置1的數(shù),也就是i,自增1,因此i變成了1(注意:iinc指令不會(huì)操作堆棧)
    iload_1 //加載位置1的數(shù),也就是i的值,1,到棧頂
    istore_1//把棧頂?shù)闹荡娴轿恢?,因此i的值就是1了。

    了解字節(jié)碼的操作:
    http://blog.csdn.net/BU_BetterYou/archive/2008/06/16/2553108.aspx
      回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類(lèi)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费91最新地址永久入口| 成人免费乱码大片A毛片| 成人婷婷网色偷偷亚洲男人的天堂| 黄色a三级三级三级免费看| 免费久久人人爽人人爽av| 成人A级毛片免费观看AV网站| 国产亚洲精品线观看动态图| 亚洲欧洲另类春色校园小说| ssswww日本免费网站片| 91嫩草国产在线观看免费| 国产亚洲精品一品区99热| 国产AV无码专区亚洲AV琪琪 | 亚洲欧美在线x视频| 免费夜色污私人影院在线观看| 亚洲成a人片毛片在线| 国产免费AV片在线播放唯爱网| 亚洲人成网站色7799| 在线观看永久免费| 亚洲精品乱码久久久久久久久久久久| 91视频免费观看| 亚洲无码精品浪潮| 免费精品国自产拍在线播放| 成年人在线免费观看| 久久久久se色偷偷亚洲精品av| 国产情侣久久久久aⅴ免费| 亚洲蜜芽在线精品一区| 国产精品免费大片| 国产亚洲精久久久久久无码| 99re视频精品全部免费| 久久久久亚洲精品影视| 在线播放免费人成毛片乱码| 亚洲精品美女久久久久9999| 18女人腿打开无遮掩免费| 亚洲国产精品成人综合色在线| 妞干网免费视频观看| 亚洲欧美日韩一区二区三区| 亚洲精品第一国产综合境外资源 | 久久最新免费视频| 精品国产人成亚洲区| 18pao国产成视频永久免费| 激情婷婷成人亚洲综合|