我的代码:这个神秘的代码是做什么的?
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);
}
什么答案?
该表达式的评估从左到右进行。这个表达式是等效于这样一个增加量评价后:
x = 1/3;
因此,答案是0;
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个不同的语句。
x++
- 后置中,x的值加1,因此它的值是2现在,然后
x++
- 预增量中,x的值被再次递增,并且赋值给x的左手侧,所以它的3现在。
System.out.println(x);
因此,这将是1/3
,这将导致0
,如果使用double
的不是int,你会看到该值0.33333333
我总是'0'想象中那么我不不知道你为什么得到'2'。 –
我正要说0,你得到1/3这是0.33,当投给int(在这种情况下)是0. –
'1/3'在整数除法中是0,不需要施法。 ;) –