我们说我有以下代码:
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实际递增的是什么行?紧接着后缀?或者在接下来按顺序调用变量之前?
我听说序列点与后缀和前缀运算符有关。这主要是我问的原因。
答案 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