2012-01-09 195 views
0

可能重复:
What is x after “x = x++”?Postfix的概念

我很震惊地看到这个输出,想知道它是如何工作的内部请帮帮我。

int i=0; 
i = i++; 
System.out.println(i); 
i=i++; 
System.out.println(i); 

输出为0和0

+0

http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop阅读此内容。 – SHiRKiT 2012-01-09 22:36:57

回答

1

将其更改为

int i=0; 
i++;//note the removed i = 
System.out.println(i); 
i++;//note the removed i = 
System.out.println(i); 

,它会如预期

Oracle documentation及其demo code,并引用最相关部分

递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码结果++;和++结果;两者的结果都会以1递增。唯一的区别是前缀版本(++结果)评估为递增值,而后缀版本(结果++)评估为原始值。如果您只是执行简单的递增/递减操作,则选择哪个版本无关紧要。但是如果你在更大的表达式中使用这个运算符,那么你选择的运算符可能会有很大的不同。

+0

刚刚尝试从我的IDE(IntelliJ)中的问题运行代码,它甚至警告我关于i ++的结果从未使用的事实 – Robin 2012-01-09 22:38:24

+0

感谢Robin,我从您的评论中得到了答案,[janeg.ca/scjp/ OPER/prefix.html]。 – 2012-01-09 22:49:19