为何(i+1)与i++不同?新手改代码遇无限循环求助
问题解析:为什么把i+1改成i++后会无限循环?
嘿,刚入门编程就遇到这种细节坑太正常啦,别慌!我来给你把这个问题讲明白~
首先得搞清楚你可能写错的地方:我猜你是把循环里的 i = i + 1 改成了 i = i++?如果是这样,那这就是触发无限循环的根源!
咱们来拆解一下这两个写法的区别:
i = i + 1:很直白,把i的当前值加1之后再赋值给i,i会实实在在地增长1。i++:这是后置自增运算符,它的执行逻辑是:先返回i当前的原始值,然后再把i本身加1。
那如果你写了 i = i++,整个过程就变成了:
- 先取出i的当前值(比如第一次循环是0);
- 把这个原始值重新赋值给i(i还是0);
- 后续的自增操作被赋值覆盖,i根本没发生有效增长!
所以i的值永远不会满足循环退出的条件(比如i >= 5),程序就会一直打印"Hello",陷入无限循环。
正确的写法应该是直接把循环里的更新语句改成 i++,不用加赋值。举个例子:
原来能正常运行的代码大概是这样:
for (int i = 0; i < 5; i = i + 1) { System.out.println("Hello"); }
改成正确的版本应该是:
for (int i = 0; i < 5; i++) { System.out.println("Hello"); }
这样每次循环结束,i都会自动加1,循环执行5次就会正常退出。
简单总结一下:i++本身就自带了让i增长的功能,不需要再把它赋值给i,不然反而会抵消掉自增的效果,导致变量值不变,触发无限循环~
内容的提问来源于stack exchange,提问作者Guy Caspi
相关产品推荐
相关产品推荐

