2017-04-12 75 views
-20

考慮這個表達式:爪哇 - 其中有更大的優先級,+或 -

x1 = ++x - x++ + --x 

如果輸入x的值5

將是什麼這樣的表達在Java中輸出,爲什麼?

+0

'x1'將是'6' – shash678

+0

無用的問題....但答案是6. –

+6

'+'和'-'具有相同的優先級,但'++'前綴/後綴運算符具有更高的優先級比'+'和'-'。請參閱[表格](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)。您還必須記住,表達式是從左到右進行評估的。 – Jesper

回答

4

在+或 -中沒有更高的優先級。

沒有他們只是外觀的順序執行括號,讓我們考慮您的示例:

public class Test { 

    public static void main(String[] args) { 
     int x = 5; 
     int x1 = ++x - x++ + --x; 
     System.out.println(x1); 
    } 
} 

將打印6

有前/後遞增/遞減的四個運算:

  • ++x將在評估之前遞增(在使用其表達式之前的值)
  • --x將評價之前遞減評估後
  • x++將遞增(使用其在表情值後)評價

打破錶達式份後

  • x--將decreemnt:

    1 )「++x」在表達式中使用它的值之前,x會加1,所以現在它是:

    6 - 
    

    2)「- x++」的x將被一個在表達式中使用它的值後遞增,所以它是:

    6 - 6 , but now x=7 
    

    3)「+ --x」的x將被減一,前其值將被使用,所以它最終轉換爲:

    x1 = 0 + 6; 
    x1 = 6; 
    

    x1 = 6 - 6 + 6; 
    

    這將作爲被執行

    顯然,+-沒有更大的優先權,因爲它只是按照外觀的順序被減去和添加。