i++也是i = i + 1
i--也是i = i - 1
範例1:
int i = 0;
i = i + 1;
System.out.println(i);
i = i - 1;
System.out.println(i);
執行結果:
1
0
範例2:
1 2 3 4 5 | int i = 0; i = i + 1; System.out. ; i = i - 1; System.out. ; |
執行結果:
1
2
重頭戲來了,範例3:
1 2 3 4 5 6 7 8 9 10 11 12 | int i = 0; System.out. ; System.out. ; i = 0; System.out. ; System.out. ; //結果: // 0 // 1 // 1 // 1 |
所以第3行,印出1
第4行歸0
第5行整行直接執行ㄧSystem.out.println(++i);執行和印出在這一行一起做,所以印出1
第6行,都加完了,再印一次當然還是1
結論:i++是先給值再+,++i是先加再給值
指定運算
指定運算子 | 範例 | 結果 |
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
&= | a &= b | a = a & b |
|= | a |= b | a = a | b |
^= | a ^= b | a = a ^ b |
<<= | a <<= b | a = a << b |
>>= | a >>= b | a = a >> b |
再看一個例子例4,中興105資科所考題:
1 2 3 4 5 6 7 8 9 10 | int |
12
14
14
16
第六行:依照上面的說法,印的時候++不做,只做a+b所以12,但這行做完a就做++了,所以這行結束後a=11,我是理解為6.5行這裡它自己偷偷做++。
第七行:注意!!這裡a已經是11,所以++a同時印同時做++,(++a)=12,12+2=14。
試問所以這行最後a是多少?是12!並沒有7.5行才++這種事,因為它是先加!!
第八行:再問,這裡a是多少?還是12,上面講過不說了。所以(12++)+2,印出14。
然後在8.5行偷做++,所以結束時a是13。
第九行:先問,a是多少?這裡問的是這行還沒運算前a是多少,答是13。所以(++a)+b。(++a)做完14,再加b就是16。
可惜當時這++概念沒搞懂,所以沒有拿到分...
沒有留言:
張貼留言