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

C语言含i++ != 0条件的while循环执行逻辑及输出结果疑问

C语言while循环执行逻辑讲解

你给出的代码运行结果为1,核心和后置自增运算符i++的特性、while循环的判断逻辑有关,具体执行规则和过程如下:

#include <stdio.h>

int main() {
    int i = 10;
    while (i++ != 0);
    printf("%d", i);
}

核心前置规则

  • 后置自增i++的执行逻辑:先返回i的当前值参与表达式运算,无论表达式最终结果是真还是假,运算结束后都会对i执行+1操作。
  • 代码中while语句末尾直接跟了分号;,代表循环体是空语句,没有任何额外执行逻辑,所有运算都在while的条件判断语句中完成。

完整执行过程

  1. 初始化阶段:i被赋值为10
  2. 每一轮循环都会先执行条件判断i++ != 0,分为两步执行:
    • 第一步:取出i的当前值,和0做不等于比较
    • 第二步:对i执行+1操作
  3. 如果第一步的比较结果为真(i当前值不等于0),则进入空循环体(无任何操作),继续下一轮判断;如果比较结果为假(i当前值等于0),直接跳出while循环。

结果说明

当前主流编译器的int类型一般用补码实现,有符号整数溢出后会按环绕规则处理:i从10开始不断自增,经过正数最大值溢出到负值,最终会累加回到0。
当i的当前值为0时进入条件判断:

  • 第一步比较0 != 0,结果为假,循环终止
  • 第二步执行i的自增操作,i变为1
    最终执行printf("%d", i)时,输出的就是i的当前值1。

内容的提问来源于stack exchange,提问作者Atm Ahad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:06:04