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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kongling 中级黑马   /  2013-12-4 23:14  /  1202 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kongling 于 2013-12-5 17:45 编辑

int a=1;
a+=2+ ++a;
此时a的值是多少?请分析原因?

5 个回复

倒序浏览
a=5
其中 ++a 运算一次,自增一次
回复 使用道具 举报
本帖最后由 sd110572 于 2013-12-4 23:44 编辑

优先级
1() [] . 从左到右
2! +(正) -(负) ~ ++ -- 从右向左
3* / % 从左向右
4+(加) -(减) 从左向右
5<< >> >>> 从左向右
6< <= > >= instanceof 从左向右
7== != 从左向右
8&(按位与) 从左向右
9^ 从左向右
10| 从左向右
11&& 从左向右
12|| 从左向右
13?: 从右向左
14= += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左

按照优先级别,结果是5。
回复 使用道具 举报
等于5,分析见代码。
  1. public class Test {

  2.         public static void main(String[] args) {

  3.                 int a = 1;
  4.                 a += 2 + ++a;
  5.                 sop(a);//运行结果5
  6.                
  7.                 a=1;//还原初始值1
  8.                
  9.                 //开始分解完成个步骤
  10.                
  11.                 //++a  先自增+1,最后等于2
  12.                 a = 2 + ++a;// 2+2=4
  13.                 a = a + 1; // 4+1=5

  14.                 sop(a);//得出结果

  15.         }
  16.         public static void sop(Object obj) {
  17.                 System.out.println(obj);
  18.         }
  19. }
复制代码
回复 使用道具 举报
滔哥常说:不要故意刷帖,否则扣你5分。
回复 使用道具 举报
本帖最后由 ily521125 于 2013-12-5 00:01 编辑

int a=1;
a+=2+ ++a;

此时a的值为6;
分析:从右往左计算:先算++a,此时++a的值为2,a的值为2;
                              再算2+++a,由于++a的值为2,所以2+(++a)结果为4;
                              最后算a+=2+++a,等价于a=a+(2+++a),即a=a+4,由于第一步得出a的值为2,所以最后的a=2+4,即a=6
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马