._.
2006-10-25 17:26:51 UTC
單看 a++ <= 3 跟 ++a <= 3 這兩個部份.
如果你手邊有書的話, 理論上會說 ++ 在前或在後的差異.
如果沒說或叫你不要用, 那是因為不希望你冒不必要的風險產生非預期的結果
a++ <= 3 可以看成是 ++a <= 3 可以看成是
=================== ===================
a <= 3; a = a + 1;
a = a + 1; a <= 3;
=================== ===================
上面的問題看起來很容易懂, 為什麼會說"冒不必要的風險產生非預期的結果"?
我只能說, 請問 a = (a++) + (a--); 何解?
請在腦袋中想一次, Code 跑跑看.
然後是否產生了預期的結果?
保證換了編譯器或 JVM 以後結果依舊嗎?
另外for的initial寫在( )內和先宣告的差別
對我比較重要的部份是在於那個變數會活多久, 有效範圍多大.
至於會有差異, 那就是某個地方有更動到數值, 但是你沒有預期到吧.
※ 引述《***@bbs.ee.ncku.edu.tw (kimi)》之銘言:
: int a=1,b=10;
: for(;a++<=3;b++)
: {System.out.println("a="+a+"b="+b);}
: 其輸出為
: a=2b=10
: a=3b=11
: a=4b=12
: 請問為何會有a=4這種情況呢?
: 另一種..
: int a=1,b=10;
: for(;++a<=3;b++)
: {System.out.println("a="+a+"b="+b);}
: 其輸出為
: a=2b=10
: a=3b=11
: 此差異之成因...?
: 另..for的initial寫在( )內和先宣告的差別是..?
: 小弟用for寫nested loop時..initial寫的位置不同.其輸出結果也差異甚大.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
如果你手邊有書的話, 理論上會說 ++ 在前或在後的差異.
如果沒說或叫你不要用, 那是因為不希望你冒不必要的風險產生非預期的結果
a++ <= 3 可以看成是 ++a <= 3 可以看成是
=================== ===================
a <= 3; a = a + 1;
a = a + 1; a <= 3;
=================== ===================
上面的問題看起來很容易懂, 為什麼會說"冒不必要的風險產生非預期的結果"?
我只能說, 請問 a = (a++) + (a--); 何解?
請在腦袋中想一次, Code 跑跑看.
然後是否產生了預期的結果?
保證換了編譯器或 JVM 以後結果依舊嗎?
另外for的initial寫在( )內和先宣告的差別
對我比較重要的部份是在於那個變數會活多久, 有效範圍多大.
至於會有差異, 那就是某個地方有更動到數值, 但是你沒有預期到吧.
※ 引述《***@bbs.ee.ncku.edu.tw (kimi)》之銘言:
: int a=1,b=10;
: for(;a++<=3;b++)
: {System.out.println("a="+a+"b="+b);}
: 其輸出為
: a=2b=10
: a=3b=11
: a=4b=12
: 請問為何會有a=4這種情況呢?
: 另一種..
: int a=1,b=10;
: for(;++a<=3;b++)
: {System.out.println("a="+a+"b="+b);}
: 其輸出為
: a=2b=10
: a=3b=11
: 此差異之成因...?
: 另..for的initial寫在( )內和先宣告的差別是..?
: 小弟用for寫nested loop時..initial寫的位置不同.其輸出結果也差異甚大.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49