遞增遞減運算子
遞增遞減運算子
遞增,就是自己加自己。
遞減,就是自己減自己。
沒有指派給其它變數
k++與++k,若沒有指派給其它變數,二者都是k = k + 1。
有指派給其它變數
k在前面
k++,k在前面,就是把k先指派給其它變數,最後才k = k + 1。
k在後面
++k,k在後面,就是k先k = k + 1,再指派給其它變數。
k在前面
先把k指派給j,然後k才遞增k = k + 1。
1
2
3
int k = 8;
int j = k++;
System.out.println("k = " + k + ", j = " + j);
k = 9, j = 8
int j = k++;
等同於
1
2
int j = k;
k = k + 1;
k在後面
k先遞增k = k + 1,然後指派給j。
1
2
3
int k = 8;
int j = ++k;
System.out.println("k = " + k + ", j = " + j);
k = 9, j = 9
int j = ++k;
等同於
1
2
k = k + 1;
int j = k;
沒有指派給其它變數
k++與++k,若沒有指派給其它變數,二者都是k = k + 1。
1
2
3
4
5
int k = 8;
++k;
System.out.println("k = " + k);
k++;
System.out.println("k = " + k);
k = 9
k = 10
若沒有指派給變數,以下二句都是一模一樣,都是遞增。k = k + 1
1
2
++k;
k++;
指派的變數是自己
k在前面
1
2
3
4
5
6
7
public class Test {
public static void main(String[] args) {
int k = 1;
k = k++;
System.out.println("k = " + k);
}
}
k = 1
編譯的時候,看到k = k++;
,指派給自己,程式碼就會變成如下:
1.會先建立一個暫存變數temp,代表等號左邊的k。
int temp = k;
2.遞增
k = k + 1;
3.把暫存變數,指派給k
k = temp;
k在後面
1
2
3
4
5
6
7
public class Test {
public static void main(String[] args) {
int k = 1;
k = ++k;
System.out.println("k = " + k);
}
}
k = 2
編譯的時候,看到k = ++k;
,指派給自己,程式碼就會變成如下:
1.先遞增。
k = k + 1;
2.建立一個暫存變數temp,代表等號左邊的k。
int temp = k;
3.把暫存變數,指派給k
k = temp;
其它範例1
1
2
int k = 66;
System.out.println(++k+k);
134
1.先遞增。
++k;
↓
k = k + 1;
此時 k = 67
2.再加k,k是67。
67 + k
67 + 67
134
其它範例2
先把k變成負數,指派給i,然後k才遞增k = k + 1。
1
2
3
int i = 0, k = 5;
i = -k++;
System.out.println("i = " + i + ", k = " + k);
i = -5, k = 6
i = -k++;
k在前面,先處理k與其它運算子或運算元。
1.k變成負數,指派給i
i = -k;
↓
i = -5;
2.k遞增,注意!此時k仍是5,不是-5。
k = k + 1;
↓
k = 5 + 1