在Java中添加后增量

时间:2014-03-18 13:46:02

标签: java .net operators addition post-increment

我在java中有以下代码

int x=5;
System.out.println(x++ + ++x);

输出为12。

我认为它应该是11。

我们这里有三个运营商:

  • +另外
  • ++(帖子)
  • ++(上)
  • 列表项

上面的print语句以哪种顺序编译?

如果我写int x=5;然后++x,请写x==6x==5,因为我还没有写x=++x。新值是否存储在x?

寻找一种方法来记住Java或.NET中的运算符优先级,就像我们有DMAS一样。这也是他们的任何比喻吗?

6 个答案:

答案 0 :(得分:5)

x++等于5x已成为6++x表示6增加1++x7。所以5 + 7 = 12是正确答案。

答案 1 :(得分:2)

在C和C ++中,这种事情是未定义的行为(因为,在这些语言中,+不会序列这两个表达式。)< / p>

但是在Java中,定义的。评估顺序是从左到右。

这很简单:第一个表达式为x++,其值为5,但x增加到6。

第二个表达式是++x,它将x从6增加到7,其值为7.

5 + 7 = 12:完成。

不用说,不建议使用这种代码。而C / C ++的端口将是灾难性的。

答案 2 :(得分:1)

在第

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

首先x为5,因此在x++之后,x将为6,但表达式将在之前进行评估,因此您将拥有:

5 + ++x

此时x为6,因此++x将首先将x增加到7,然后评估表达式。最后你会得到:

5 + 7

12

答案 3 :(得分:1)

评估/增量将在+运算符之前,一个接一个地发生

您的println是,一步一步:
(x++ + ++x)其中x = 5
(5++ + ++x)其中x = 5
(5 + ++x)其中x = 6
(5 + x)其中x = 7
(5 + 7) = 12

在对x求和之前,你有2个x的增量,从5到7,因此解释了总数为12。

答案 4 :(得分:1)

post increment

在表达式评估期间,仅使用pre incremnted值。(在完成表达式评估后使用后增量运算符) 这可能会对你有所帮助

   =x++ + ++x
   =x++ + 6
   =6 + 6
   =12

答案 5 :(得分:0)

重点是:

x ++增量x表达式中的赋值后。 ++ x增量x在表达式中的赋值之前。

所以,在你的例子中,你实际上做了5 + 7。 5因为增量是在评估之后完成的,所以x变为6。 7因为增量是在评估之前完成的,所以x变为7。