在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 為什么輸出的x 是7,y 是2?

為什么輸出的x 是7,y 是2?

    int x = 1,y = 1;
    if(x++==1 | ++y==1) 
     {
        x =7;
     }
    System.out.println("x="+x+",y="+y);

為什么輸出的x 是7,y 是2?

回答
編輯回答
扯不斷

++a 是進行自加,a++是先進行表達式的運算

2018年8月23日 02:12
編輯回答
兔寶寶

++在 x 的后面,所以 x 先與 1 進行比較,是true,則執(zhí)行 x = 7; ++在 y 的前面,所以 y 自增 1 變?yōu)?2

2018年2月24日 06:07
編輯回答
溫衫

單豎線|操作,是將各個操作數(shù)轉(zhuǎn)換成二進制,然后各位相或操作的結(jié)果

4|4 100|100 100和100 各位相或操作100 4
5|4 101|100 100和100 各位相或操作101 5
8|4 1000|100 1000和0100 各位相或操作1100 12

那么問題中的x++==1 | ++y==1操作的結(jié)果就是0|1 結(jié)果就是1 就是true,所以x=7。y=2就不用解釋了吧

2018年3月25日 04:56
編輯回答
尋仙

首先要清楚:“||”具有短路功能,但是“|”沒有短路功能

所以就很簡單了,在判斷條件中“x++==1”:先比較后自增,所以返回true,x=2。

因為不會短路,所以依然會判斷條件“++y==1”:先自增后比較,y=2,返回false。

進入if中的代碼塊,x被賦值為7。

所以結(jié)果:x=2,y=7

2018年7月23日 21:43
編輯回答
嘟尛嘴
int x = 1,y = 1;
if(x++==1 | ++y==1) 
//x++==1先比較x==1(x此時為1,為true),再x=x+1(x=2)
//‘|’運算中,2邊都會計算;“||”運算中,當左邊為true時不計算右邊
//++y==1先進行y=y+1(y=2),再進行y==1(y此時為2,false)
 {
 //在‘|’運算中,只要1邊為true,就會向下執(zhí)行,所以執(zhí)行x=7
    x =7;
 }
System.out.println("x="+x+",y="+y);
2018年1月11日 20:49