A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔_博_文 中级黑马   /  2012-11-21 21:19  /  1379 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乔_博_文 于 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。从输出结果来推算的话,推算不出来。请大侠们赐教,承惠!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
jerry2627 发表于 2012-11-22 10:05
int a = 6,b;
      b = a+++a;
      System.out.println(a);

谢谢仁兄的热心回答,受益良多
回复 使用道具 举报
叶桂宏 发表于 2012-11-21 23:26
其实还是没有注意清楚,运算具有右集合性,就是先从a++开始运算,结果是b=a++,运算结果是b=6,a=7,然后b= ...

嗯,谢谢你的热心指点,受教了:P
回复 使用道具 举报
      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了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
        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。
(丢死人了-_-!)

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马