2015-10-16 70 views
2

比方说,我有以下代码:什么时候变量的后缀操作符实际增加?

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

那么后缀表单首先会返回表达式的当前值,然后对该值执行递增操作。所以它会在第5行本身增加。 – Siddhartha

回答

1

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

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

1

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

这方面的一个例子是循环中的经典之作:

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

当你编写代码

x++ 

这对你和增量由x 1

返回x的值,所以它增加线路上无5本身。

相关问题