簡體   English   中英

if條件下如何遞增和遞減

[英]How increment and decrement with if condition

我有這個代碼:

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
        }           
    }
}

這是 output -->

++x==x : 101
x==x++ : 102
++x==x++ : 109

我想弄清楚 java 編譯器如何處理這段代碼。 我可以弄清楚 output 的這一部分是如何產生的:

++x==x : 101
x==x++ : 102

但我不能使用 output 的這一部分:

++x==x++ : 109

這段代碼是如何工作的? 最重要的是最后一個 output 是如何工作的?

您只需要知道 3 件事並使用邏輯將其組合在一起:

  1. x++的意思是:“增加 x,但表達式的值是增加之前 x 的值”。
  2. ++x表示:“增加 x,表達式的值就是增加x 的值”。
  3. ==運算符從左到右解決問題。 所以,java“解決”左邊的東西,然后是右邊的東西,然后進行計算。

因此,給定: ++x==x++ ,假設x以 107 開頭。讓我們分解一下:

  1. 首先,解析左側,即++x 為此,遞增( x現在為 108),然后將表達式解析為遞增的值。 所以,左邊是108
  2. 接下來解析右側,即x++ 為此,遞增( x現在是 109),然后將表達式解析為遞增之前的值。 所以,右手邊是108
  3. 現在做手術。 108 == 108 這是true ,所以如果“通過”,結果就會被打印出來。 假設x現在是 109,它將打印“++x==x++: 109”。

這正是它的作用。

++x是前增量x++是后增量

即使您的條件為假,也會完成遞增。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM