如何使用 if 条件进行递增和递减

Mad*_*ura 2 java increment

我有这个代码:

class Example {
    public static void main(String args[]) {
        int x = 99;

        if (x++ == x) {
            System.out.println("x++==x : " + x);
        }

        if (++x == x ) {
            System.out.println("++x==x : " + x); // ++x == x : 101
        }

        if (x == x++) {
            System.out.println("x==x++ : " + x); //x==x++ : 102
        }

        if (x == ++x) {
            System.out.println("x==++x : " + x);
        }

        if (++x == ++x) {
            System.out.println("++x==++x : " + x);
        }

        if (x++ == x++) {
            System.out.println("x++==x++ : " + x);
        }

        if (++x == x++) {
            System.out.println("++x==x++ : " + x); // ++x==x++ : 109
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

这是输出 -->

++x==x : 101
x==x++ : 102
++x==x++ : 109
Run Code Online (Sandbox Code Playgroud)

我想弄清楚java编译器如何处理这段代码。我可以弄清楚它是如何得出这部分输出的:

++x==x : 101
x==x++ : 102
Run Code Online (Sandbox Code Playgroud)

但我无法处理这部分输出:

++x==x++ : 109
Run Code Online (Sandbox Code Playgroud)

这段代码是如何工作的?最重要的是最后的输出是如何工作的?

rzw*_*oot 5

你只需要知道三件事并使用逻辑将它们组合在一起:

  1. x++意思是:“增加 x,但表达式的值是增加之前 x 的值”。
  2. ++x意思是:“增加x,表达式的值就是增加后x的值”。
  3. 对于操作员来说,事情是从左到右解决的==。所以,java“解析”左边的东西,然后是右边的东西,然后进行计算。

因此,给定:++x==x++,假设x从 107 开始。让我们将其分解:

  1. 首先,解析左侧,即++x。为此,请递增(现在为 108),然后将表达式解析为递增后的x值。所以,左边是。108
  2. 接下来解析右侧,即x++. 为此,请递增(现在为 109),然后将表达式解析为递增之前的x值。所以,右手边是。108
  3. 现在做手术。108 == 108。也就是说true,如果“通过”,则打印结果。鉴于x现在是 109,它将打印“++x==x++ : 109”。

这正是它的作用。