首先,我們先來看一段程序
int a = 0;
int b = 0;
a = a++;
b =a++;
System.out.println(a);
System.out.println(b);
請大家先想想答案
答案是0 1
首先,我們先來了解一下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.