int a = 0, b = 0;
for (int i = 0; i < 5; i++) {
if (++a > 2 || ++b > 2) {
a++;
}
}
System.out.println("a= " + a + " b=" + b);
你能解釋一下邏輯嗎?越來越混淆這個解釋這個循環導致java
int a = 0, b = 0;
for (int i = 0; i < 5; i++) {
if (++a > 2 || ++b > 2) {
a++;
}
}
System.out.println("a= " + a + " b=" + b);
你能解釋一下邏輯嗎?越來越混淆這個解釋這個循環導致java
I = 0 = 1(第一條件是假,從而第二被檢查)B = 1
I = 1個α= 2(第一條件是假,從而第二被檢查)B = 2
i = 2 ++ a增量a,a = 3條件爲真如果條件成立並且a變爲4並且b保持爲2
類似地i = 3 a = 6 b = 2並且i = 4 a = 8 b = 2;
在或(||)條件編譯時遇到的真實情況就停止檢查其他聲明
情況下,這是五個迭代和結果的& b最後的。每一行都是循環中每次迭代的結果。
a b
--------
1 1
2 2
4 2
6 2
8 2
++a > 2 means increment a (by 1) first than compare with 2
++b > 2 means increment b (by 1) first than compare with 2
a++ means a=a+1; means increment a by 1.
我覺得你的困惑可能來自++a
VS a++
。基本上,他們兩人都將a
的價值增加了1
,這意味着a = a + 1
。
所不同的是++a
先做增量再做比較,而a++
先做比較再增加。
所以看你的代碼:
a
和b
,以及實例for
循環將重複5次第一次迭代: - 第四行:++a
--->a == 1
,然後將其與2
進行比較,依此類推b
,此處的表達式返回false
,所以跳過線5
a= 1 b=1
第二次迭代: - 第四行:++a
--->a == 2
,然後把它比作2
,所以對b
,這裏的表達式返回false
,所以跳過線5
a= 2 b=2
第三次迭代:(後面的迭代中是相似的) - 第四行:++a
--->a == 3
,然後比較它2
,所以對b
,這裏的表達式返回true
,所以在達到第5行現在。
5號線:a++
--->a == 4
9號線:在這裏打印出a= 4 b=3
希望有所幫助。
++ a表示在操作前a的當前值增加1(在這種情況下,比較a> 2前a增加1)a ++表示a的當前值增加1次手術後。 (在這種情況下,增加a的值,儘管沒有任何操作)。
For循環不被任何事件中斷.....所以,它循環5次(i = 0,1,2,3 ,4)。
對於i = 0 - > 電流B的α= 0,電流值的值= 0
如果(++一> 2 || ++ B> 2)
在本聲明中,a比1前增加1.因此,當前值爲0並且增加1.新值爲1. 現在比較a(1)和2 ....並且同樣的事情發生在b。
如果(1> 2 || 1> 2)
該語句是假的。所以去結束語句的末尾。
對於i = 1 - = 1
相同的值之前增加1之前比較 '一> 2',並且還與B A = 1時,當前B的值的>當前值。 (新A = 2,b = 2)
如果(2> 2 || 2> 2)
語句是假的。到if語句的結尾。
對於i = 2 - >電流的= 2,B = 2
增加的1值 - >一個= 3,並且還B = 3之前進行比較。
如果(3> 2 || 3> 2)
如果條件爲真。然後
一個++
語句執行。 a = 4的新值。b的值保持不變(3)。
對於i = 3 - >的電流值的= 4,B = 3 增加a和b由1倍新的值(α= 4,B = 4)
如果(5> 2 || 4> 2)
true。然後
一個++
A = 6,B的新值保持相同(4)。
對於i = 4 - >的電流值的= 6,B = 4 增加A和B(7,5)
如果(7> 2 || 5> 2)
爲真。然後
一個++
一個= 8,b的新的值保持不變(5)。
的for循環結束(ⅰ< 5條件失敗)
下一語句
的System.out.println( 「A =」 + A + 「B =」 + B)
顯示「a = 8 b = 5」
你知道'++ a'和'a ++'之間的區別嗎?如果是這樣,你的邏輯問題是什麼? – RealSkeptic
你得到的輸出是什麼,你期望的是什麼? –
我建議你閱讀並理解預增量和增量後的操作符是什麼,然後在一張紙上手動執行該程序的空運行,然後用PC o/p計算結果。這將清除你的概念。實踐是關鍵! –