为什么以下代码有效?我希望它会产生错误,但不会

时间:2019-02-15 06:03:11

标签: java

以下代码中x的值是什么?

int x=15; 
x %= x++ + +x - 3

请解释原因。

为什么它没有给出+x或前面的多余+的语法错误?

2 个答案:

答案 0 :(得分:1)

x %= (x++) + (+x) - 3;  

x++称为后增量。 You can check this post.
+x只是一个符号运算符。

所以您的陈述将评估为:

x %= (15) + (+16) - 3;

答案 1 :(得分:0)

您可以将代码分成如下部分,以了解其工作原理:

    int x = 15; 
    int y = x++ + +x;
    System.out.println(y);  //result: 31 (x = 15, then incremation so it is 15 + 16)
    System.out.println(x);  //result: 16 because of previous incrementation
    y = y - 3;
    System.out.println(y);  //result: 31 - 3 = 28
    x %= y;
    System.out.println(x);  //result: 16 % 28 = 16