遞增遞減運算子

遞增遞減運算子

遞增,就是自己加自己。
遞減,就是自己減自己。

沒有指派給其它變數

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

results matching ""

    No results matching ""