作者CrystalNik (水晶尼克)
看板java
標題[問題] 關於一個小程式的問題
時間Mon Feb 17 23:25:27 2014
public class Static
{
static
{
int x = 5;
}
static int x,y ;
public static void main(String args[])
{
x--;
myMethod();
System.out.println( x + y + ++x );
}
public static void myMethod()
{
y = x++ + ++x ;
}
}
想請問各位大大為何這段程式碼執行結果為何是3 ?
我自己理解是 x-- 後 x為-1
所以 y = x++ + ++x ; 之前 x為-1
++x先算所以x變為0
所以 y = 0 + 0 所以 y=0
x++後算所以 x=1
所以 myMethod 執行之後 x=1 ,y=0
接著是 ( x + y ++x )
y=0 所以這式子其實是 x + ++x
一樣 ++x 先算所以 x變2
所以為 2+2=4
但很明顯結果是3.... 所以一定是哪裡有問題....
請問這是怎麼回事?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.239.211.6
推 LPH66:Java 的二元運算子會隔開 ++ 的效應 02/17 23:27
→ LPH66:所有左邊的效應會結算完右邊的計算才會開始 02/17 23:29
→ CrystalNik:可是那為什麼一開始myMethod裡面沒有隔開算呢? 02/17 23:35