回答編集履歴

2

追記

2016/08/02 13:33

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -15,3 +15,57 @@
15
15
 
16
16
 
17
17
  よって最終的には「x = 2 * 4」として評価されます。
18
+
19
+
20
+
21
+ ###追記
22
+
23
+ コメントを受け補足します。
24
+
25
+ 誤解を与えてしまったかもしれませんが、
26
+
27
+ 前置インクリメントと後置インクリメントでは、
28
+
29
+ どちらが優先して実行するというルールはありません。
30
+
31
+
32
+
33
+ あくまでコードの実行順に依存します。
34
+
35
+
36
+
37
+ 複数行に分かれる場合
38
+
39
+ ```Java
40
+
41
+ int a = 2;
42
+
43
+
44
+
45
+ // コードは上から下に実行される
46
+
47
+ a++; // こっちが先に動く
48
+
49
+ ++a; // こっちが後
50
+
51
+ ```
52
+
53
+
54
+
55
+ 同一行内の場合
56
+
57
+
58
+
59
+ ```Java
60
+
61
+ int a = 2;
62
+
63
+
64
+
65
+ // コードは原則、左から右へ評価する
66
+
67
+ // 下記は前置インクリメントが先に動く
68
+
69
+ int x = ++a * a++; // x = 9
70
+
71
+ ```

1

文面の変更

2016/08/02 13:33

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -1,14 +1,16 @@
1
- 前置インクリメントは演算前に1を加算し、
1
+ 前置インクリメントは値を取り出す前に1を加算し、
2
2
 
3
- 後置インクリメントは演算後に1を加算します。
3
+ 後置インクリメントは値を取り出した後に1を加算します。
4
4
 
5
5
 
6
6
 
7
7
  つまり以下の動作は、
8
8
 
9
- 先ず左辺で「a++」で初期値の2を出力後に加算てaの値を3にし
9
+ 先ず左辺で「a++」で初期値の2を取り出し、
10
10
 
11
+ その後に1を加算してaの値を3にし、
12
+
11
- そして右辺の「++a」で先ず加算して4にして出という動作となります。
13
+ そして右辺の「++a」で先ず1を加算して4にしてから値を取り出すという動作となります。
12
14
 
13
15
 
14
16