2017-04-12 74 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; 
    

    这将作为被执行

    显然,+-没有更大的优先权,因为它只是按照外观的顺序被减去和添加。