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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘辉林 中级黑马   /  2012-12-25 22:33  /  1996 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘辉林 于 2013-1-10 23:09 编辑

class  Demo
{
  public static void main(String[] args)
{
      int a = 5;
      System.out.println( a+=3+ a++ + ++a );
}
}
  程序运行结果是20,想了好久也没弄明白怎样得来的,求解题思路!

9 个回复

倒序浏览
a++结果是5,++a结果是6,所以式子就成了a=a+3+5+6,这个时候a=6了,所以呢,a=6+3+5+6,不知道我表达的可以么
回复 使用道具 举报
   1,  a+=3+ a++ + ++a   这个式子用到了运算符的优先级   ++  的优先级高于 +=   
   2,    所以先运行 a++  和 ++a   但是  a++在后是先运算再++, 所以第一步运算(++a)得到  a = 6;
          然后是 a+=3,得到 (a+=3)=9 ,最后是  9+5+6 = 20
   3,  建议   看看运算符优先级,还是有好处的
回复 使用道具 举报
李海鹏 发表于 2012-12-25 23:41
a++结果是5,++a结果是6,所以式子就成了a=a+3+5+6,这个时候a=6了,所以呢,a=6+3+5+6,不知道我表达的可以 ...

a++是先取值再运算,++a是先运算再取值。按你说的式子变成a= a+3+5+6,这时a不是等于7吗,a++后变成6,++a后不就变成7了?
回复 使用道具 举报
郭俊 发表于 2012-12-25 23:54
1,  a+=3+ a++ + ++a   这个式子用到了运算符的优先级   ++  的优先级高于 +=   
   2,    所以先运行 a ...

++a运算完怎么就直接跳到a+=3呢,这个+=不是最后才运算的吗?
回复 使用道具 举报
刘辉林 发表于 2012-12-26 10:54
++a运算完怎么就直接跳到a+=3呢,这个+=不是最后才运算的吗?

  你好  是最后运算的啊    你没看到我说的 a++ 是先运算再++   所以 a++ 就 = 5
    最后结果是 9+5+6       红字部分我上面答案都有,   其实你不必纠结这个++的问题,别想得太深了,它一般就是用来计数用的
回复 使用道具 举报
C:\Documents and Settings\Administrator\桌面\未命名.jpg
注意

未命名.jpg (12.66 KB, 下载次数: 38)

未命名.jpg
回复 使用道具 举报
其实最主要的是搞情况两点,第一是++的运用,第二是运算符的优先级
回复 使用道具 举报
了解一下寄存器 对于解决这个问题有帮助的  取值和赋值先后顺序弄清除了 答案自然就出来
  现在和你说你也就是知道个结果 了解一下原理 解决类此问题就方便了  而且多接触一些底层 处理问题也有根据了 不是么
回复 使用道具 举报
呵呵,这个题很有用,很不错,学到了……谢谢!!原来是先 ++a,再a++,再继续+=
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马