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

for循环调用函数后意外输出额外整数4的异常问题

循环结束后额外输出4的原因分析

你期望程序输出1、2、3后结束,但实际运行时多输出了一个4,问题出在这几个地方:

先看你的代码:

#include <stdio.h>

int fun(int var);
//int var = 345;

int i = 0;

int main(int argc, const char * argv[]) {

    //printf("%d\n", fun(156));
    for(i = 0; i <= 3; i++){
        fun(i);
    }
    printf("%d \n", i);
    return 0;
}

int fun(int var){
    printf("%d\n", var);
    return 0;
}

问题根源

for循环的执行流程是:初始化 → 条件判断 → 执行循环体 → 变量自增 → 再次条件判断……

  • 当i=3时,满足i<=3的条件,执行fun(3)输出3;
  • 之后执行i++,i的值变成4;
  • 再次判断i<=3,4不满足条件,循环结束;
  • 最后执行循环外的printf("%d \n", i);,就输出了4。

你误以为循环在i=3时直接结束,但实际上循环体执行完后会先完成i的自增,再进行下一次条件判断,这时候i已经变成4了,而循环外的printf刚好输出了这个值。

解决办法

如果不想输出这个4,有两种简单方式:

  • 直接删除循环结束后的printf("%d \n", i);语句;
  • 修改循环条件为i < 3,这样i到3时就不会进入循环,循环结束后i的值是3,即使保留printf也不会输出4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:21