私のコード:
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
答えは何ですか?
私のコード:
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
答えは何ですか?
int x = 1;
x = x++ / ++x;
System.out.println(x);
評価は左から右に行われます: -
1
++x
、評価されます.. 3 になります (x の後にインクリメントされたためx++
)したがって、基本的に、上記のコードは次と同等です: -
int x = 1;
int a = x++; // a = 1, x = 2
int b = ++x; // b = 3, x = 3
x = a / b; // x = 1 / 3
System.out.println(x); // Prints 0
この式の評価は、左から右に実行されます。この式は、インクリメント評価後の次の式と同等です。
x = 1/3;
したがって、答えは 0 です。
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
x = 1;
// 整数値 1 を変数 x に代入
x = x++ / ++x;
上記のステートメントを 2 つの diff ステートメントに分割してみましょう。
x++
- PostIncrement、x の値が 1 増加するため、現在の値は 2 です。
x++
- PreIncrement、x の値は再びインクリメントされ、左側の x に割り当てられるため、現在は 3 です。
System.out.println(x);
したがって、 int の代わりに使用すると、値が になる1/3
ことがわかります。0
double
0.33333333