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

C语言自增运算代码输出疑问:为何h的值是85而非84?

C语言代码变量h输出结果解析

先看你的代码:

#include<stdio.h>

void main() {
    int g = 83;
    int h = (g++, ++g);
    printf("%d", h);
}

你困惑的核心是对g++的执行时机理解有误,下面直接拆解逻辑:

  • (g++, ++g)是逗号表达式,C语言里逗号表达式的规则是:从左到右依次计算每个子表达式,整个表达式的最终结果是最后一个子表达式的返回值。
  • 具体执行步骤:
    1. 初始状态:g = 83
    2. 执行第一个子表达式g++:这是后置自增,先返回g当前的值(83),执行完这个子表达式后立刻把g的值加1,此时g = 84
    3. 执行第二个子表达式++g:这是前置自增,先把g的值加1(此时g = 85),再返回这个新值(85)
    4. 逗号表达式取最后一个子表达式的返回值85赋值给h,所以最终输出85

你之前误以为g++要等到分号后才递增变量,实际是:后置自增的"返回旧值"和"变量递增"是两个动作,返回旧值后立刻就会完成变量递增,不是等到整个语句结束。

内容的提问来源于stack exchange,提问作者Tushar K. Sengar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:40:28