黑马程序员技术交流社区

标题: 运行你知道结果吗?运行后知道原因吗?反正我是有点晕 [打印本页]

作者: 廖理    时间: 2012-5-9 19:36
标题: 运行你知道结果吗?运行后知道原因吗?反正我是有点晕
本帖最后由 廖理 于 2012-5-9 19:38 编辑

不运行你知道结果吗?运行后知道原因吗?反正我是有点晕了
为什么结果会是这样呢?
class FileDemo1{
        public static void main(String[] args)throws IOException{
               
        int i = 0;
        int j = 0;
        
        int k = 0;
        int h = 0;
        
        i = i++ + ++i;
        
        j = ++j + j++ + j+ j++;
        
        k = k++ + k++ + k++ + ++k;
               
        h = ++h + + ++h;        
        
        System .out.println("i =" + i);
        System .out.println("j =" + j);
        System .out.println("k =" + k);
        System .out.println("h =" + h);
        }
}

运行结果:i =2               
                j =6
                k =7
                h =3





作者: 蒋映辉    时间: 2012-5-9 19:47
i = i++ + ++i;
i++=0;但是之后i=1; ++i=2
所以等于2
j = ++j + j++ + j+ j++;
++j=1 j=1,j++=0,j=2, j++=3
最后一个看不懂了

k = k++ + k++ + k++ + ++k;
k++=0,k=1,k++=1,k=2,k++=2,k=3,++k=4
k=0+1+2+4=7
j=1+1+2+2=6
作者: 蒋映辉    时间: 2012-5-9 19:50
最后一个  经测试,, 中间一个加  两个加  三个加。。。N个加都不影响结果  也就是说实质是一样的
  h = ++h + + ++h;   
h++=0,h=1
++h=2,
h=0+ +2=3
作者: 蒋映辉    时间: 2012-5-9 19:52
i = i++ + ++i;
i++=0;但是之后i=1; ++i=2
所以等于2
j = ++j + j++ + j+ j++;
++j=1 j=1,j++=0,j=2, j++=3
j=1+1+2+2=6
k = k++ + k++ + k++ + ++k;
k++=0,k=1,k++=1,k=2,k++=2,k=3,++k=4
k=0+1+2+4=7
最后一个  经测试,, 中间一个加  两个加  三个加。。。N个加都不影响结果  也就是说实质是一样的
  h = ++h + + ++h;   
h++=0,h=1
++h=2,
h=0+ +2=3

作者: 赵志勇    时间: 2012-5-9 19:54
我要的是飞翔 而不是失根的飘
作者: 黄奕豪    时间: 2012-5-9 20:00
我觉得吧,楼主可以去用Eclipse搞个断点调试一下!!看看每一步的结果值~~~这样就明白了!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2