【发布时间】:2020-06-25 15:49:51
【问题描述】:
您可能已经在某个地方看到过这个,但我找不到关于它的问题。这只是一种好奇心,但我想知道幕后到底发生了什么:
int j = 0;
for (int i = 0; i < 100; i++) {
j = j++;
}
System.out.println(j);
尽管第一次出现,上面的输出将为 0。以前,我以为它会这样工作:右边(0)的j分配给左边(0)的j,然后左边的j递增为1。我的问题是:因为@左边的987654327@和右边的j在同一个地址,为什么后面的增量不粘了?我之前曾想过,后增量运算符将执行延迟到分配之后。就像这样:“j = 0; k = j++;”将导致k == 0 和j == 1。那么编译器在执行“j = j++;”时究竟会发生什么?
【问题讨论】:
-
看看这个stackoverflow.com/questions/2371118/…(然后在你的脑海中将
j++评估为零,增加j,然后将零分配给j,然后就可以了) -
这能回答你的问题吗? Java increment and assignment operator
-
谢谢sfiss,我没看到那个帖子。该帖子中的第三个答案回答了它;后增量运算符实际上只是在赋值之前执行之前,而不是在整个语句执行之后,正如我之前所想的那样。
-
对于阅读此问题的任何人,请不要投反对票。谢谢。
标签: java post-increment