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

为何C语言函数some_function返回值为10?新手技术咨询

为什么for循环结束后返回的i是10?

先把你的代码修正(补全缺失的main函数,不影响核心问题逻辑)后整理如下:

#include <stdio.h>
#include <stdlib.h>

int some_function(void);

int main(void) {
    int result;
    result = some_function();
    printf("%d", result);

    return 0;
}

int some_function(void)
{
    int i;
    for (i = 0; i < 10; i++)
    {
        // printf("%d", i);
    }

    return (i);    
}

这是因为C语言的for循环执行流程是固定的,咱们拆解这个循环的每一步:

  • 初始化阶段:执行i = 0,这一步只在循环启动时运行一次。
  • 条件判断阶段:检查i < 10是否成立:
    • 成立则进入循环体(你的代码里循环体是空的,仅注释了打印语句);
    • 不成立则直接退出循环。
  • 增量阶段:每次循环体执行完毕后,必然会执行i++,之后回到条件判断阶段重复检查。

咱们模拟到循环结束的关键步骤:
当i=9时,9 < 10成立,进入空循环体后执行i++,i的值变成10。
此时回到条件判断:10 < 10不成立,循环直接终止。这时i的值就是10,函数自然返回这个数值。

直白点说:循环体执行时i的取值是0到9(共10次),但循环终止的前提是i不满足i < 10,所以最后一次增量操作会把i推到10,这才是循环停下来的触发条件——不管你有没有注释循环体里的打印,这个逻辑都不会改变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:01:16