<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





    總結:
    i=i++沒有意義,不要在代碼里出現為好,以免誤導他人。也不建議用i=++i。

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

    評論

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

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

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

    int main(int argc , char** argv){
    int i = 0;
    i = i ++;
    fprintf(stdout,"%d",i);
    }
    運行結果:
    1
      回復  更多評論   

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

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

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

    @ahx
    多才!  回復  更多評論   

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

    常識吧。講運算符時都會提到這一點。  回復  更多評論   

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

    @ahx
    正確。先執行賦值操作,然后執行增量操作。  回復  更多評論   

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

    @ahx

    很希望在給多種代碼演示的時候說明下是哪種語言..
    我們新手看起來就沒那么懵了...
    也可以長長知識...謝謝!  回復  更多評論   

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

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

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

    了解字節碼的操作:
    http://blog.csdn.net/BU_BetterYou/archive/2008/06/16/2553108.aspx
      回復  更多評論   


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


    網站導航:
     

    導航

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

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩免费一级毛片| A在线观看免费网站大全| 亚洲福利在线播放| 日本亚洲欧美色视频在线播放| 最近中文字幕免费mv视频8| 亚洲制服丝袜第一页| 国产1024精品视频专区免费| 亚洲综合网美国十次| 黄页网站在线观看免费高清| 激情亚洲一区国产精品| 91频在线观看免费大全| 99亚偷拍自图区亚洲| 日韩免费观看的一级毛片| 精品亚洲成A人在线观看青青| 四虎影在线永久免费观看| 日本一区二区三区免费高清在线 | 在线免费观看中文字幕| 亚洲A∨精品一区二区三区下载| 国产成人综合久久精品免费 | 亚洲aⅴ天堂av天堂无码麻豆| 免费在线观看黄网| 成人精品视频99在线观看免费| 久久亚洲精品成人777大小说| 1000部拍拍拍18免费网站| 亚洲日韩精品无码AV海量| 又粗又硬又大又爽免费视频播放| 一级黄色免费大片| 亚洲国产成人片在线观看无码| 永久黄色免费网站| 亚洲av乱码一区二区三区按摩 | 国产成人亚洲综合色影视| 亚洲无砖砖区免费| 无码天堂亚洲国产AV| 亚洲成色在线综合网站| 成年美女黄网站色大免费视频| 免费无码国产在线观国内自拍中文字幕| 国产亚洲一区二区精品| 久九九精品免费视频| 三级网站在线免费观看| 亚洲性色AV日韩在线观看| 国产亚洲精品成人AA片新蒲金|