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

求助:这段C语言代码循环执行次数不符合预期的原因排查

问题分析与修正方案

第一个循环的错误

你的第一个for循环末尾多了一个分号;,这会导致循环体被解析为空语句——循环会执行10次,但每次什么都不做。后面的{a++;}是独立的代码块,只会执行一次,所以a只增加了1,而非预期的10。

错误代码片段:

for (int zaehler = 0; zaehler != 10; zaehler = zaehler +1);
{
    a++;
}

修正后:
去掉循环末尾的分号,让{a++;}成为循环体:

for (int zaehler = 0; zaehler != 10; zaehler = zaehler +1)
{
    a++;
}

第二个循环的错误

第二个循环的变量n是int类型,当执行n = n - 0.5时,右侧计算结果是double类型,赋值给int变量会自动截断小数部分,相当于每次n实际减1(比如917-0.5得到916.5,转成int后是916)。这导致循环只执行917次,而非预期的1834次。

错误代码片段:

int n;
for (n = 917; n > 0; n = n - 0.5)
{
        a++;
}

修正后:
将n的类型改为double,确保小数减法能被正确处理:

double n;
for (n = 917; n > 0; n = n - 0.5)
{
        a++;
}

完整修正代码

另外补充:void main并非C标准写法,建议改为标准的int main并返回0:

#include<stdio.h>

int main(void)
{
    double a = 0;
    //(a)
    for (int zaehler = 0; zaehler != 10; zaehler++)
    {
        a++;
    }
    //(b)
    double n;
    for (n = 917; n > 0; n = n - 0.5)
    {
            a++;
    }

    printf("%.2lf\n", a );
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:53:12