具有后缀运算符的变量何时实际递增?

时间:2015-10-16 18:23:49

标签: java

我们说我有以下代码:

int x = 5;
System.out.println(x++);              // Will print 5
System.out.println("Random code");    // Will write "Random code" 
System.out.print(x):                  // Will write 6

我的问题是:x实际递增的是什么行?紧接着后缀?或者在接下来按顺序调用变量之前?

我听说序列点与后缀和前缀运算符有关。这主要是我问的原因。

3 个答案:

答案 0 :(得分:1)

后缀形式首先返回表达式的当前值,然后THEN对该值执行增量操作。所以它将在第5行自身增加。

这方面的一个例子是经典的for循环:

for (int i = 0; i<10; i++)
{
  //something
}

我们经常hear that i++ could be replaced by ++i ,因为for循环的第三个条件语句在那里被评估。

因此,如果i = 5,它将在该语句本身增加到6,然后继续进行for循环体。如果postfix的行为使得i只在下次访问时才会增加,那么i将会在循环的迭代中保持5次,这将是完全不同的而不是++1

答案 1 :(得分:1)

编写代码时

x++

为您返回x值并将x递增1。

因此它在第5行增加。

答案 2 :(得分:1)

x的值将在打印后立即递增(在这种情况下)。发生的事情是比较/打印/对变量执行一些其他操作,然后在这样的操作之后直接增加。如果你有类似的东西,也会发生同样的事情 int z = 0; if (1 > z++) { system.out.println (z) } ,它会打印1。

编辑:java中没有序列点。阅读本文以获取更多信息: sequence point concept in java