public class test { static boolean foo(char c) { System.out.print(c); return true; } public static void main( String[] argv ) { int i =0; for ( foo('A'); foo('B')&&(i <2); foo('C')){ i++ ; foo('D'); } } }
2 回答

白衣非少年
TA貢獻1155條經驗 獲得超0個贊
for執行的順序我就不多解釋了。簡單的帶過
進入for循環的時候首先執行的是foo('A')這里輸出A
其次執行foo(‘B’)輸出B返回為真,判斷I是不是小于2(i=0小于2)為真
執行i++;
執行foo(‘D’);輸出D;
執行foo('C');輸出C
第一次循環結束,開始第二次循環
第二次循環就不再執行foo(‘A’);
沖foo(‘B’)開始,輸出B返回真,判斷I是不是小于2(i=1小于2)為真
執行i++;
執行foo(‘D’);輸出D
執行foo(‘C’)輸出C
第二次循環結束
第三次開始
執行foo(‘B’)輸出B返回真判斷I是不是小于2(i=2不于2)為假循環結束
所以輸出為ABDCBDCB

FFIVE
TA貢獻1797條經驗 獲得超6個贊
循環的時候先調用foo('A')輸出A 然后看條件調用foo('B')輸出B 并且滿足了i<2 所以執行循環體內部的 就是i++ 調用foo('D')輸出D 下一步執行foo('C')輸出C 因為滿足循環條件,所以繼續執行foo('B')&&(i=1)<2,輸出B,滿足條件再次進入循環i++ 調用foo('D')輸出D,接著執行foo('C'),然后再判斷條件foo('B')輸出B&&(i=2)<2不成立 循環退出。輸出結果為ABDCBDCB
for(int i=0;i<2;i++)和這個對比一下就能看出來了,就是循環順序的問題。
添加回答
舉報
0/150
提交
取消