为什么循环无限重复? [重复]

问题描述 投票:-1回答:2
1:   for(int i = 0; i < 10;  ) {
2:        i = i++;
3:        System.out.println("Hello World!");
4:   }

我发现的解释是这样:-

循环内的表达式递增i,然后为i分配旧值。因此,i以与循环开头的相同值结束循环:0。循环将无限重复,一次又一次地输出相同的语句,因为在每次循环后我仍然为0。

但是在使用postincrement运算符时,返回的是表达式的原始值,并在返回值之后应用了operator,因此,由于后增运算,应该在评估第1行的测试条件时更新i:-

1:   for(int i = 0; i < 10;  ) {
2:        i = i;
3:        i = i + 1; // postincrement update
4:        System.out.println("Hello World!");
5:   }
java infinite-loop post-increment postfix-operator
2个回答
3
投票

表达式i = i++的顺序如下:

i++是一个表达式,其计算结果为i的未增加的值。

i++具有增加i的副作用。这种增加发生在紧接任务之前。

但是由于分配了表达式i的值,因此i重置为i++的未增加的值。


0
投票

它运行无尽,因为0 + 0为0。如果您使用正确,它将是>

1:   for(int i = 0; i < 10;  ) {
2:        i++;
3:        System.out.println("Hello World!");
4:   }

wich是0 +1,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.