質問するログイン新規登録

回答編集履歴

2

追記

2016/08/02 13:33

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -6,4 +6,31 @@
6
6
  その後に1を加算してaの値を3にし、
7
7
  そして右辺の「++a」で先ず1を加算して4にしてから値を取り出すという動作となります。
8
8
 
9
- よって最終的には「x = 2 * 4」として評価されます。
9
+ よって最終的には「x = 2 * 4」として評価されます。
10
+
11
+ ###追記
12
+ コメントを受け補足します。
13
+ 誤解を与えてしまったかもしれませんが、
14
+ 前置インクリメントと後置インクリメントでは、
15
+ どちらが優先して実行するというルールはありません。
16
+
17
+ あくまでコードの実行順に依存します。
18
+
19
+ 複数行に分かれる場合
20
+ ```Java
21
+ int a = 2;
22
+
23
+ // コードは上から下に実行される
24
+ a++; // こっちが先に動く
25
+ ++a; // こっちが後
26
+ ```
27
+
28
+ 同一行内の場合
29
+
30
+ ```Java
31
+ int a = 2;
32
+
33
+ // コードは原則、左から右へ評価する
34
+ // 下記は前置インクリメントが先に動く
35
+ int x = ++a * a++; // x = 9
36
+ ```

1

文面の変更

2016/08/02 13:33

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -1,8 +1,9 @@
1
- 前置インクリメントは演算前に1を加算し、
1
+ 前置インクリメントは値を取り出す前に1を加算し、
2
- 後置インクリメントは演算後に1を加算します。
2
+ 後置インクリメントは値を取り出した後に1を加算します。
3
3
 
4
4
  つまり以下の動作は、
5
- 先ず左辺で「a++」で初期値の2を出力後に加算てaの値を3にし
5
+ 先ず左辺で「a++」で初期値の2を取り出し、
6
+ その後に1を加算してaの値を3にし、
6
- そして右辺の「++a」で先ず加算して4にして出という動作となります。
7
+ そして右辺の「++a」で先ず1を加算して4にしてから値を取り出すという動作となります。
7
8
 
8
9
  よって最終的には「x = 2 * 4」として評価されます。