首页 > 解决方案 > 一元增量运算符疯狂

问题描述

有人可以给我一种调试以下示例的方法:

public class Example1 {
    public static void main(String[] input) {
        int i = 0;
        // i = i++ + i++;        // prints 1
        // i = i++ + i++ + i++;  // prints 3
        i = i++ + i-- + i++;     // prints 1
        System.out.print(i);
    }
}

由于每个示例都是一个单行代码,因此使用调试不是解决方案……我正在尝试使用类似这样的代码来进行 Java OCA 8 考试。

谢谢你的帮助

标签: javapost-incrementpre-increment

解决方案


让我们分解你的第一个例子:

int i = 0;
i = i++ + i++;

第一个i++评估为0。的新值i是 now 1。第二个i++评估为1,新值为inow 2。接下来是两个后缀增量表达式的相加:0 + 1 = 1。最后,将此总和分配给,用总和 ( ) 的结果i覆盖其临时值 ( )。21

其他示例非常相似,我让 OP 自己处理它们。


推荐阅读