注意两点:
1. 在系统里,a与b的存储位置唯一
2. ++a,--a是先进行自增、自减处理,再处理表达式;而a++,a--是先计算表达式,再进行自增、自减处理。*(把每一个表达式单独计算)*例子一: int a = 3, b;
b = (a++)+(++a)+(a++)*2+a+(++a); 输出结果:b = 31处理过程如下:- public class Test01 {
- public static void main(String[] args) {
- int a = 3, b;
- b = (a++);
- // 3
- System.out.println(b);
- //输出:3
- //先计算表达式,然后完成自增。 此时: b = 3, a = 4
-
- b = 0;a = 3;
- b = (a++) + (++a);
- // 3 + 5
- System.out.println(b);
- //输出:8
- //先完成自增,然后计算表达式。 此时: b = 8, a = 5
- b = 0;a = 3;
- b = (a++) + (++a) + (a++) * 2;
- // 3 + 5 + 5 * 2
- System.out.println(b);
-
- //输出:18
- //先计算表达式,然后自增运算。 此时: b = 18, a = 6
-
- b = 0;a = 3;
- b = (a++) + (++a) + (a++) * 2 + a;
- // 3 + 5 + 5 * 2 + 6
- System.out.println(b);
- //输出:24
- //先计算表达式,然后自增运算。 此时: b = 18, a = 6
- //直接相加
-
- b = 0;a = 3;
- b = (a++) + (++a) + (a++) * 2 + a + (++a);
- // 3 + 5 + 5 * 2 6 + 7
- System.out.println(b);
- //输出:31
- //先计算表达式,然后自增运算。 此时: b = 24, a = 7
-
- }
- }
复制代码
例子二: int a = 4; int b = (a++)+(++a)+(a*10)+(a++);
System.out.println("a="+a);
System.out.println("b="+b);输出结果:a = 7, b = 76处理过程如下:- public class Test02 {
- public static void main(String[] args) {
- int a = 4;
- int b = (a++);
- // 4
- System.out.println("a=" + a + ",b=" + b);
- b = 0;
- a = 4;
- b = (a++) + (++a);
- // 4 + 6
- System.out.println("a=" + a + ",b=" + b);
- b = 0;
- a = 4;
- b = (a++) + (++a) + (a * 10);
- // 4 + 6 + (6 * 10)
- System.out.println("a=" + a + ",b=" + b);
- b = 0;
- a = 4;
- b = (a++) + (++a) + (a * 10) + (a++);
- // 4 + 6 + (6 *10) + 6
- //最后一次运算:(a++),先参与运算,把结果赋值到b, 然后才是++
- //例如:
- //int a = 1;
- // b = (a++);
- // b = 1;与有无括号没有关系
- // 计算完表达式,之后a就++了,这样a 就是 a = 7
- System.out.println("a=" + a + ",b=" + b);
- }
- }
复制代码 希望可以帮助到你。
|