Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个神秘的密码是干什么的?_Java - Fatal编程技术网

Java 这个神秘的密码是干什么的?

Java 这个神秘的密码是干什么的?,java,Java,我的代码: 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); 从左到右进行评估:- 首先对x++进行评估。。因此,它将是1 那么x将增加1。。对于增加后

我的代码:

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);
从左到右进行评估:-

首先对x++进行评估。。因此,它将是1 那么x将增加1。。对于增加后的。。 然后计算++x。。这将是3,因为x在x之后递增++ 因此,基本上,您的上述代码相当于:-

x=1;//将整数值1赋值给变量x

x = x++ / ++x;
让我们把上面的语句分成两个diff语句

x++-PostIncrement,x的值增加1,所以它的值现在是2,然后

x++-PreIncrement,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,不需要转换;简单的方法是将表达式替换为:x=x/2+x//x++/++x
x = x++ / ++x;
System.out.println(x);