int x = 1;
System.out.println(x++ + x++ * --x);
上記のコードは "5"を出力しますが、わかりません。最後のxについては0を得続け、2番目のxにはまだ0が乗算されて2が得られます。助けてください!Javaの優先順位
int x = 1;
System.out.println(x++ + x++ * --x);
上記のコードは "5"を出力しますが、わかりません。最後のxについては0を得続け、2番目のxにはまだ0が乗算されて2が得られます。助けてください!Javaの優先順位
プログラムは次のようにあなたの文がある処理する方法:
x = 1;
1 + (increment x) 2 * (increment x)(decrement x) 2 =
1 + 2 * 2 =
1 + 4 =
5
を追加しました:
あなたの代わりに、実際に計算を行うのあなたのためにそれをプリントアウトし、それを頼む場合、あなたは何が表示されますXは、実際に等しい:
int x = 1;
System.out.println(x++ + " + " + x++ + "*" + --x);
出力:1 + 2*2
それはこのように動作します:
System.out.println(x++ + x++ * --x);
最初の二つは、彼らが価値が既にに置かれた後まで実行されることはありません1は、最初のx
に置かれた値が2 Aまで増加する接尾なので。図2は、第x
に置かれ、値が値に下塗りの前に行われる動作を接頭辞--x
ため3.
System.out.println(1 + 2 * --x);
に増加されます。したがって、2に等しく、x
は再び2に等しくなります。
System.out.println(1 + 2 * 2);
この後、これは通常の数学(加算前の乗算)と同じように機能します。
public static void main(String[] args) {
int x ;
x = 1;
System.out.println(x++);
//1
System.out.println(x++ * --x);
//2*--3 = 2*2 = 4
System.out.println(x++ + (x++ * --x));
//1 + 4 = 5
System.out.println(x++ + x++ * --x);
//1 + 4 = 5
}
今、完璧な意味合いがあります。ありがとう@blahfunk! – Matthew