为什么这段代码会进入无限循环?

JAN*_*JAN 0 java loops while-loop

请考虑以下代码:

public class Game {

    public static void main(String[] args) {

        int x = 0;
        while (x < 1) {
          x = x++;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

使用我的编译器,这段代码进入无限循环,但为什么呢?

首先,我们把价值xx,而只有那么我们就加1 x,之后我会想到1 < 1会是假的,while循环将终止...

但不,那不会发生.

那么无限循环可能是什么原因呢?

rge*_*man 7

表达式x++是后增量,意味着表达式的值是旧值,0然后将其分配回x,因此x总是0在之后x = x++;.

为了打破无限循环,不分配回x,留下的增加值后x,1,完整:

while (x < 1) {
   x++;
}
Run Code Online (Sandbox Code Playgroud)