b = b ++和b ++之间的差异

rob*_*bin 3 java post-increment

我在接受采访时被问到以下问题.

int b = 0;
b = b++;
b = b++;
b = b++;
b = b++;
Run Code Online (Sandbox Code Playgroud)

每行执行后b的值是多少?每行输出为0.

为什么输出不是0,1,2,3?

NPE*_*NPE 6

在Java中,表达式

b = b++
Run Code Online (Sandbox Code Playgroud)

相当于

int tmp = b;
b = b + 1;
b = tmp;
Run Code Online (Sandbox Code Playgroud)

因此结果.

(在其他一些语言中,完全相同的表达式具有未指定的行为.请参阅未定义的行为和序列点.)