Java Precedence

时间:2016-07-05 18:12:07

标签: java

Window

以上代码打印出“5”,但我不明白怎么办?我继续为最后一个x得到零,然后乘以第二个x,它仍然是0,然后我得到2?请帮忙!

3 个答案:

答案 0 :(得分:3)

程序处理语句的方式如下:

x = 1;
1 + (increment x) 2 * (increment x)(decrement x) 2 =
1 + 2 * 2 =
1 + 4     =
5

添加了:

如果你要求它为你打印而不是实际算术,你会看到x实际上是相等的:

    int x = 1;
    System.out.println(x++ + " + " +  x++  + "*" + --x);

输出:1 + 2*2

答案 1 :(得分:1)

它的工作原理如下:

System.out.println( x++ + x++ * --x );

由于前两个是后缀,因此在输入值之后才会执行它们。在第一个x中放入1,然后将值增加到2.第二个放入第二个x,值增加到3。

System.out.println( 1 + 2 * --x );

由于--x是前缀,因此操作在下载值之前完成。因此,它将等于2,x将再次等于2.

System.out.println( 1 + 2 * 2 );

在此之后,它的工作方式与数学中通常的相同(加法前的乘法)。

答案 2 :(得分:0)

public static void main(String[] args) {

        int x ;
        x = 1; 

        System.out.println( x++ );
        //1

        System.out.println( x++ * --x );
        //2*--3 = 2*2 = 4

        System.out.println( x++ + (x++ * --x ));
        //1 + 4 = 5

       System.out.println( x++ + x++ * --x );
       //1 + 4 = 5
    }