[英]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 件事並使用邏輯將其組合在一起:
x++
的意思是:“增加 x,但表達式的值是增加之前 x 的值”。++x
表示:“增加 x,表達式的值就是增加后x 的值”。==
運算符從左到右解決問題。 所以,java“解決”左邊的東西,然后是右邊的東西,然后進行計算。 因此,給定: ++x==x++
,假設x
以 107 開頭。讓我們分解一下:
++x
。 為此,遞增( x
現在為 108),然后將表達式解析為遞增后的值。 所以,左邊是108
。x++
。 為此,遞增( x
現在是 109),然后將表達式解析為遞增之前的值。 所以,右手邊是108
。108 == 108
。 這是true
,所以如果“通過”,結果就會被打印出來。 假設x
現在是 109,它將打印“++x==x++: 109”。這正是它的作用。
++x
是前增量x++
是后增量
即使您的條件為假,也會完成遞增。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.