You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用i++后程序陷入无限循环,而++i可正常运行?

为什么i = i++会导致无限循环,而i = ++i能正常执行?

先拆解问题核心:你代码里的关键问题出在i = i++这一行,我们分别看两种自增运算符的行为,就能明白差异:

  • 后自增i++的执行逻辑:
    后自增的规则是:先返回变量当前的原始值,再将变量自身加1。但当你写i = i++时,整个操作的实际流程是:

    1. 读取i的当前值(比如第一次循环时是0),作为i++的返回结果;
    2. 将i的值加1(此时i变成1);
    3. 执行赋值操作,把第一步得到的原始值(0)重新赋给i。
      这么一来,i绕了一圈又回到了初始值,永远满足i < 5的循环条件,自然陷入无限循环。
  • 前自增++i的执行逻辑:
    前自增的规则是:先将变量自身加1,再返回更新后的变量值。执行i = ++i时:

    1. 先把i的值加1(第一次循环时从0变成1);
    2. 返回更新后的i的值(1);
    3. 将这个值赋给i,最终i的值就是1。
      每次循环i都会正常递增,直到i等于5时退出循环。

额外说明:严格来说,在C/C++标准中,i = i++这种在同一表达式中对同一变量同时进行读取和修改,且没有明确序列点的操作属于未定义行为——不同编译器可能有不同的执行顺序,但在绝大多数常用编译器中,都会出现上述的无限循环现象。

内容的提问来源于stack exchange,提问作者Varun Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:39:59