我很震惊地看到这个输出,想知道它是如何工作的内部请帮帮我。
int i=0;
i = i++;
System.out.println(i);
i=i++;
System.out.println(i);
输出为0和0
我很震惊地看到这个输出,想知道它是如何工作的内部请帮帮我。
int i=0;
i = i++;
System.out.println(i);
i=i++;
System.out.println(i);
输出为0和0
将其更改为
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递增。唯一的区别是前缀版本(++结果)评估为递增值,而后缀版本(结果++)评估为原始值。如果您只是执行简单的递增/递减操作,则选择哪个版本无关紧要。但是如果你在更大的表达式中使用这个运算符,那么你选择的运算符可能会有很大的不同。
刚刚尝试从我的IDE(IntelliJ)中的问题运行代码,它甚至警告我关于i ++的结果从未使用的事实 – Robin 2012-01-09 22:38:24
感谢Robin,我从您的评论中得到了答案,[janeg.ca/scjp/ OPER/prefix.html]。 – 2012-01-09 22:49:19
http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop阅读此内容。 – SHiRKiT 2012-01-09 22:36:57