-9

私のコード:

public void mysterious() {
    int x = 1;
    x = x++ / ++x;
    System.out.println(x);
}

答えは何ですか?

4

3 に答える 3

4
int x = 1;
x = x++ / ++x;
System.out.println(x);

評価は左から右に行われます: -

  • 最初に x++ が評価されます。1
  • その後、x は 1 ずつインクリメントされます。Post Increment の場合。
  • その後++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
于 2012-10-08T10:40:20.897 に答える
0

この式の評価は、左から右に実行されます。この式は、インクリメント評価後の次の式と同等です。

x = 1/3;

したがって、答えは 0 です。

于 2012-10-08T10:33:14.910 に答える
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ことがわかります。0double0.33333333

于 2012-10-08T11:00:45.613 に答える