Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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,有人能解释一下为什么z的结果等于12? 我已经读过增量前后的内容,但这里的内容对我来说仍然没有意义 public static void main(String[] args) { int x = 1, y = 2, z = 3; x = x + y; y = y + x; z = z + (x++) + (++y); System.out.print("x = " + x + "\ny = " + y + "

有人能解释一下为什么
z
的结果等于
12
? 我已经读过增量前后的内容,但这里的内容对我来说仍然没有意义

public static void main(String[] args) {
        int x = 1, y = 2, z = 3; 
        x = x + y;
        y = y + x;
        z = z + (x++) + (++y);  
        System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
     }
}
就像我看到的:

x=x+y
x
->
1
(后增量为1)
+y
->
3
(前增量为1),
x=4

y=y+x
y
->
4
(预加1)
+x
->
2
(后加1),
y=6

z=z+(x++)+(++y)
z
->
3+x
->
3
(后增量为1)
+y
->
5
(前增量为1),
z
=
11

y = x++; // This assignes x 's value to y then increment x by 1
y = ++x; // This increments x by one then assigns new x's value to y.
在你的代码上

    int x = 1, y = 2, z = 3; 
    x = x + y;
    // x = 3
    y = y + x;
    // y = 5
    z = z + (x++) + (++y); 
    // z = 3 + 3 + 6 --> 12
z=z+(x++)+(++y)代码等于以下三行代码的组合:

y = y + 1; 
z = z + x + y;
x = x + 1;
在你的代码上

    int x = 1, y = 2, z = 3; 
    x = x + y;
    // x = 3
    y = y + x;
    // y = 5
    z = z + (x++) + (++y); 
    // z = 3 + 3 + 6 --> 12
z=z+(x++)+(++y)代码等于以下三行代码的组合:

y = y + 1; 
z = z + x + y;
x = x + 1;

请参阅下面代码中的注释

在这个问题中,您自己的注释的主要问题是,您看到的是在没有任何注释的情况下,出现了增量前运算符和增量后运算符。例如,在
x=x+y
中,这是一个简单的赋值,任何地方都没有增量

public static void main(String[] args) {
        int x = 1, y = 2, z = 3;
            // so now (x,y,z) == (1,2,3)
        x = x + y;
            // so now (x,y,z) == (3,2,3)
        y = y + x;
            // so now (x,y,z) == (3,5,3)
        z = z + (x++) + (++y);
            // here, x++ would return 3 (unincremented)
            //       ++y would return 6 (incremented)
            // so now z = 3 + 3 (unincremented x) + 6 (incremented y) == 12
            // and in the process both x and y have been incremented
            // so we have (x,y,z) == (4,6,12)
        System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
     }
}

请参阅下面代码中的注释

在这个问题中,您自己的注释的主要问题是,您看到的是在没有任何注释的情况下,出现了增量前运算符和增量后运算符。例如,在
x=x+y
中,这是一个简单的赋值,任何地方都没有增量

public static void main(String[] args) {
        int x = 1, y = 2, z = 3;
            // so now (x,y,z) == (1,2,3)
        x = x + y;
            // so now (x,y,z) == (3,2,3)
        y = y + x;
            // so now (x,y,z) == (3,5,3)
        z = z + (x++) + (++y);
            // here, x++ would return 3 (unincremented)
            //       ++y would return 6 (incremented)
            // so now z = 3 + 3 (unincremented x) + 6 (incremented y) == 12
            // and in the process both x and y have been incremented
            // so we have (x,y,z) == (4,6,12)
        System.out.print("x = " + x + "\ny = " + y + "\nz = " + z);
     }
}

让我们对
z=z+(x++)+(++y)行做一个简单的分析(无实际代码):


让我们对
z=z+(x++)+(++y)行做一个简单的分析(无实际代码):



x=x+y
中没有后增量或预增量,那么为什么您认为这些表达式涉及任何后增量或预增量?Marcin Szymczak所说的是使用IDE的调试器逐步完成代码。您可以设置断点并在变量更改时检查变量,以查看不同的操作对结果的影响。如果您不使用IDE并且尝试设置它太困难,您可以始终依赖
println
debugger:):):@ajb,这是因为当我运行代码时,它给了我x=4,y=6。所以我只是认为这是解决问题的方法。现在我很清楚,我真的误解了整件事。
x=x+y
中没有后增量或预增量,那么为什么你认为这些表达式涉及任何后增量或预增量?Marcin Szymczak说的是使用IDE的调试器来逐步处理代码。您可以设置断点并在变量更改时检查变量,以查看不同的操作对结果的影响。如果您不使用IDE并且尝试设置它太困难,您可以始终依赖
println
debugger:):):@ajb,这是因为当我运行代码时,它给了我x=4,y=6。所以我只是认为这是解决问题的方法。现在我很清楚我真的误解了整件事。但是当我运行代码时,x=4,y=6,然后就像你说的z=12@chr911
x
y
在最后一个语句(分配
z
的语句)之前是3和5。最后一条语句将
z
设置为12,它还使
x
y
增加1,这样当您执行
打印时,它们分别为4和6。是的,x在最后一个操作中为4(x++)。X的值3用于运算,然后X加1。@chr911请参阅我答案的最后一部分。@SalihErikci感谢您的帮助!非常感谢。但是当我运行代码时,x=4,y=6,然后就像你说的z=12@chr911
x
y
在最后一个语句(分配
z
的语句)之前是3和5。最后一条语句将
z
设置为12,它还使
x
y
增加1,这样当您执行
打印时,它们分别为4和6。是的,x在最后一个操作中为4(x++)。X的值3用于运算,然后X加1。@chr911请参阅我答案的最后一部分。@SalihErikci感谢您的帮助!谢谢,现在我明白了@chr911不客气:)如果您觉得答案有用,请点击勾号,将其标记为已接受答案(也会给您带来一些代表)。@chr911是的,对不起,拼写错误太多了!现在更正。谢谢,现在我明白了@chr911不客气:)如果您觉得答案有用,请点击勾号,将其标记为已接受答案(也会给您带来一些代表)。@chr911是的,对不起,拼写错误太多了!现在更正。谢谢你的提供。谢谢你的提供。