My code:
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
whats the answer?
My code:
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
whats the answer?
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
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);
所以它将是1/3
,这将导致0
,如果您使用double
而不是 int,您将看到该值为0.33333333
此表达式的评估是从左到右执行的。这个表达式等价于增量评估后的这个:
x = 1/3;
因此,答案是 0;