2017-05-11 7 views
-3

Iは、Java 8のコードのこの部分を持っている:JAVAの1行の式で複数の前/後のインクリメントの順序は?

私はそれがこのように分割されなければならない理解するよう

int x=3; int y = --x + x++ + --x ; System.out.print("y: " + y + " x: "+x);

  1. Y = 2 + X ++ + --x。 x = 2
  2. y = 2 + 2 + - x; x = 2
  3. y = 2 + 2 + 1; x = 1
  4. y = 5; x = 2

y: 6 x: 2 ここでの操作の順序は何ですか?

答えて

1

それが原因prepostインクリメント作業方法のだが、それは次のように評価されます:2つの減分及び1つのインクリメント後

1. y = --x + x++ + --x ; 
2. y = 2 + (2)++ + --(3); 
3. y = 2 + 2 + 2; 
4. y = 6 

は、x 2.

+0

第3の動作も場合predecrementation でなります'y = --x + -x' yは3、xは1になります。 この例では2番目の-xは3ではなく2で初期化されていますか? –

+0

はい、2(プリ)デクリメントと1(ポスト)インクリメントは、結果的に1減少し、 'x'の値を2に変更します。 –

+0

私は最終的なxが2である理由を理解しています。最初に '2 +2 + 1'を与えた後でsecond(pre)が呼び出されないのはなぜですか? –