首先,我们先来看一段程序
int a = 0;
int b = 0;
a = a++;
b = a++;
System.out.println(a);
System.out.println(b);
请大家先想想答案
答案是1 0
首先,我们先来了解一下i++和++i的区别:
1. i = i++是先返回值,再进行运算
2. i = ++i 是先运算,再返回值
第二点相信很多人可以理解,第一点的执行过程大概如下:
i=i++;等同于:
temp=i; (等号右边的i)
i=i+1; (等号右边的i)
i=temp; (等号左边的i)
所以该题执行过程如下:
前置条件:a = 0 ;
执行a = a++;
temp = 0;
a = a+1; //此时a是1
a = temp; //a变成0了
所以最后a还是0
前置条件:b = 0; a =0;
执行b = a++;
temp = a;
a = a+1;
b = temp;
所以b为0,但是这个时候a经过a=a+1,已经变成1了.
前面也有这个过程,a在那时确实为1,
但是接下去的a = temp 导致a变成了0.