作者ju22 (分享)
看板java
標題[問題] 奇怪的i++敘述...
時間Sat Oct 24 00:03:53 2009
hi,all
我遇到一個不知所以然的i++敘述
code如下
boolean j;
int i=2;
if(i++>0)
System.out.println("i++>0");
System.out.println("The i is "+i);
j= 1==2 && i++>0;
System.out.println("The j is "+j);
System.out.println("The i is "+i);
執行完後的結果,在i的值那部份都是印出
The i is 3
我就覺得很奇怪,遇到i++的敘述後不是都要加1嗎??
為什麼
j= 1==2 && i++>0;
這行執行完後,i的值不會加1呢??
btw,我把這行改成
j= 1==2 || i++>0;
或是
j= 1==2 ^ i++>0;
或
j= 1==1 && i++>0;
後,i的值就會再加1
所以我在想是不是and運算在判斷前面是false時
就會自動去忽略&&後面的敘述
造成不去執行後面的i++
Thanks!!
--
誰說人多就不寂寞......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.106.194
※ 編輯: ju22 來自: 61.228.106.194 (10/24 00:14)
→ james732:1==2為false &&右邊的東西便不會執行 10/24 00:19
推 costbook:短路運算 10/24 00:38
→ liaosankai:你把i++改成++i就可以了 10/24 02:02
→ danny8376:&&的特色 前面否定後面就忽略 這樣可以增加效能... 10/24 21:46
→ danny8376:這跟用i++ ++i沒關係... (如果後面的式子一定要執行 用& 10/24 21:49
→ ju22:thanks all!! 10/25 01:33