[英]Can't figure out why this prints out 63
遇到這段代碼並試圖解決它......但不太明白為什么它會打印出63?
public static void main(String[]args)
{
int x = 0;
int y = 0;
for(int z= 0; z < 5; z++)
{
if ((++x > 2)&&(++y > 2))
{
x++;
}
}
System.out.println(x+""+y);
}
首先,++x 表示 x 被加 1,然后讀取 if 語句中的檢查。 所以第一次檢查時 x 是 1。
但是在 Java 中還有另一件事,如果你檢查兩個語句,就像你在下面做的那樣:
if ((++x > 2)&&(++y > 2))
如果第一個檢查失敗,第二個就不會被執行。
我在控制台中寫了輸出,對於所有的循環周期都有 -----:
x: 0 y: 0 z: 0 if: (false && (not executed) ) x: 1 ----- x: 1 y: 0 z: 1 if: (false && (not executed) ) x: 2 ----- x: 2 y: 0 z: 2 if: (true && false) x: 3 y: 1 ----- x: 3 y: 1 z: 3 if: (true && false) x: 4 y: 2 ----- x: 4 y: 2 z: 4 if: (true && true) x: 5 y: 3 x: 6 ----- 63
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.