為什么以下代碼只輸出4行"我看不見我看不見我看不見",輸出不應該是8行代碼嗎?
public?class?Foryunsuan?{ ????public?static?void?main(String[]?args)?{ ????????int?i?=?1; ????????for(;i!=5&&i<10;){ ????????????System.out.println("看不見看不見看不見"); ????????????i++; ????????} ????} }
public?class?Foryunsuan?{ ????public?static?void?main(String[]?args)?{ ????????int?i?=?1; ????????for(;i!=5&&i<10;){ ????????????System.out.println("看不見看不見看不見"); ????????????i++; ????????} ????} }
2020-12-10
舉報
2020-12-10
我認為這要分兩個步驟分析:
比較運算符“!=” 是在(i = 5;i != 5)時輸出結果false。for循環中最后一步執行i++,i++是先賦值在+1在執行第四個循環的時候i的值為5,第五個循環開始時進入比較運算符的判斷即(i = 5;i ! = 5)此時輸出結果為false。
邏輯運算符中“&&”有”短路“現象,即如果左邊運算結果為false時,則系統就認為已經沒有必要執行右側了。此代碼中當比較運算符“!=”判斷結果為false時即(i = 5;i != 5)時滿足此條件,則停止運行,所以出現四行結果。
不知分析的是否正確,若哪里有不足或錯誤歡迎指出。