我的代码:
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
答案是什么?
答案 0 :(得分:4)
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
答案 1 :(得分:0)
该表达式的评估从左到右进行。在增量评估之后,此表达式等效于此表达式:
x = 1/3;
因此,答案是0;
答案 2 :(得分:0)
public void mysterious() {
int x = 1;
x = x++ / ++x;
System.out.println(x);
}
x = 1;
//将整数值1赋值给变量x
x = x++ / ++x;
将上述语句分解为2个差异语句。
x++
- PostIncrement,x的值增加1,所以它的值现在是2,那么
x++
- PreIncrement,x的值再次递增并分配给左侧的x,所以现在为3。
System.out.println(x);
因此1/3
会导致0
,如果您使用double
而不是int,则会看到值为0.33333333