A: initialization
B: end condition
C: adjustment
- for ( A ; B ; C ) {
- D
- }
- E
次序 A -> B -> true -> D -> C -> B -> true -> D -> C -> B -> false -> E;
------------------------------
2.
- int a = 10;
- System.out.println(a++); // a = a + 1;
- System.out.println(a+3);
- System.out.println(a+=3); // a = a + 3;
- System.out.println(++a); // a = 1+a;
- System.out.println(a*2);
- System.out.println(a*=2); // a = a * 2;
- System.out.println(a/=a); // a = a / a;
- System.out.println(a%a);
- System.out.println((a));
line ans:
3. 10
4. 14
5. 14
6. 15
7. 30
8. 30
9. 1
10. 0
11. 1
Comment :
由於電腦read statement的方式是由左至右,所以以下兩句的output會有分別:
1. System.out.println(++a);
2. System.out.println(a++);
1 是prefix increment, 即先call ++ function ,後再println 變量 a 的值。
2 是postfix increment, 即先println 變量a的值,後再call ++ function。
另外,
1. int a = 10;
2. int b = (a*=2);
line 2 的運作是想把一個"整數值"賦予給int類別的變量b ,而這個值需要由 (a*=2) 中拿出來 ,
但必須經過一輪運算 ,除非是 int b = a; ,你直接知道右邊的值。
而 a*=2; 中, 電腦看到 *= or /= or %= or += or -= or ++ or -- , 都會call 一個function 出來
去改變自身的值, 與 * or / or % or + 這些不同,不會改變自己的值;
所以, a*=2 會先做一個動作 a = a*2; 然後再彈出 a的值出來,即20。 此時,你就可以知道右邊的值是20了。
int b = (a*=2); 和 int b = a*=2; 是一樣意思
沒有留言:
張貼留言