int a=4;
int b=10;
int c = (--a)+(a--)+a*b;
System.out.println(a);
System.out.println(b);
System.out.println(c);
请问a,b,c的结果是什么?
我的想法:
1.--a,的结果是3;
2.a--,的结果是3;此时我认为a还是3
3.a*b = 30;
4.c = 36;
结果是c=26;所以我就很疑惑,到底a--到底什么时候自减?明明运算还没结束,a*b的时候,a已经变成2了。int c = (--a)+(a--)+a*b;
根据运算符优先级,先算()内, int c = 3+3(此时a--已经结束,结束后a--为2)+2*30;
如果删除()会不会结果不一样呢?int c = --a+a--+a*b; 结果是一样的,因为-- ++大于*大于+ -
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、-- (此处+ -是表正负) | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |