黑马程序员技术交流社区

标题: 新人求教自增运算,请看下面代码 [打印本页]

作者: 乔_博_文    时间: 2012-11-21 21:19
标题: 新人求教自增运算,请看下面代码
本帖最后由 乔_博_文 于 2012-11-22 11:46 编辑

        1        int a = 6,b;
        2        b = a+++a;
        3        System.out.println(a);
        4        System.out.println(b);
请教各位大侠,这段程序运行第二行代码的时候,计算机默认执行顺序是什么?a+(++a)还是(a++)+a?
最后的输出结果是a=7,b=13。感觉上面两种顺序运行时,输出结果都是a=7。从输出结果来推算的话,推算不出来。请大侠们赐教,承惠!

作者: 乔_博_文    时间: 2012-11-21 21:38
        1        int a = 6,b,c=1;
        2        b = a+++c;
        3        System.out.println("a= "+a);
        4        System.out.println("b= "+b);
        5        System.out.println("c= "+c);
我问的问题太白痴了,呵呵。现在已经解决了。输出结果为a=7,b=7,c=1。可知默认顺序为(a++)+c。
(丢死人了-_-!)
作者: jerry2627    时间: 2012-11-22 10:05
      int a = 6,b;
      b = a+++a;
      System.out.println(a);
      System.out.println(b);
很简单,若是++在数的后面,先用当前a的值参与运算,然后a++,
反之,先进行自增,再参与运算
b = a++ + a ;  第一个a参与运算的值是6    但是第二个就是7了 因为前面a自增了
若是 = ++a +a ; 结果就应该是14了
作者: 乔_博_文    时间: 2012-11-22 11:28
叶桂宏 发表于 2012-11-21 23:26
其实还是没有注意清楚,运算具有右集合性,就是先从a++开始运算,结果是b=a++,运算结果是b=6,a=7,然后b= ...

嗯,谢谢你的热心指点,受教了:P
作者: 乔_博_文    时间: 2012-11-22 11:48
jerry2627 发表于 2012-11-22 10:05
int a = 6,b;
      b = a+++a;
      System.out.println(a);

谢谢仁兄的热心回答,受益良多




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