黑马程序员技术交流社区
标题:
关于运算符的问题
[打印本页]
作者:
kongling
时间:
2013-12-4 23:14
标题:
关于运算符的问题
本帖最后由 kongling 于 2013-12-5 17:45 编辑
int a=1;
a+=2+ ++a;
此时a的值是多少?请分析原因?
作者:
HAnG
时间:
2013-12-4 23:38
a=5
其中 ++a 运算一次,自增一次
作者:
sd110572
时间:
2013-12-4 23:39
本帖最后由 sd110572 于 2013-12-4 23:44 编辑
优先级
1() [] . 从左到右
2! +(正) -(负) ~ ++ -- 从右向左
3* / % 从左向右
4+(加) -(减) 从左向右
5<< >> >>> 从左向右
6< <= > >= instanceof 从左向右
7== != 从左向右
8&(按位与) 从左向右
9^ 从左向右
10| 从左向右
11&& 从左向右
12|| 从左向右
13?: 从右向左
14= += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左
按照优先级别,结果是5。
作者:
25343215
时间:
2013-12-4 23:45
等于5,分析见代码。
public class Test {
public static void main(String[] args) {
int a = 1;
a += 2 + ++a;
sop(a);//运行结果5
a=1;//还原初始值1
//开始分解完成个步骤
//++a 先自增+1,最后等于2
a = 2 + ++a;// 2+2=4
a = a + 1; // 4+1=5
sop(a);//得出结果
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
复制代码
作者:
汪洋大海
时间:
2013-12-4 23:52
滔哥常说:不要故意刷帖,否则扣你5分。
作者:
ily521125
时间:
2013-12-4 23:58
本帖最后由 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
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2