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

为什么C语言for循环添加赋值语句会得到不同的运行结果?

核心原理

C 语言的语法规则中,如果for循环没有显式加{}包裹循环体,那么只有紧随for语句后的第一条语句会被当成循环内容执行,代码缩进仅用于提升可读性,对语法逻辑没有任何影响。

以下是三种写法的具体差异分析:

第一种写法(运行结果为5)

for (m = 1; m <= n; m++)
        i = m%10;
        printf("%d", i);
  • 循环体只有i = m%10;这一行,printf语句不属于循环内容,会在循环完全结束后才执行。
  • 输入n=25时,循环会执行25次,i每次都会被覆盖为当前m%10的结果,最后一次循环m=25,i = 25%10 = 5。
  • 循环结束后执行printf,打印的是最终的i值5,因此输出为5。

第二种写法(运行结果为1234567890123456789012345)

for (m = 1; m <= n; m++)
        printf("%d", m%10);
  • 循环体是printf("%d", m%10);这一行,每次循环都会执行一次打印。
  • m从1遍历到25,每次打印当前m%10的结果:1、2、3...9、0、1、2...9、0、1、2、3、4、5,拼接起来就是对应的长串输出。

第三种写法(运行结果为6)

for (m = 1; m <= n; m++)
    i = m%10;
    printf("%d", m%10);
  • 和第一种写法逻辑类似,printf不属于循环体,仅在循环结束后执行一次。
  • for循环的执行顺序为:判断条件→执行循环体→m自增→再次判断条件。当m=25时,满足m<=25的条件,执行循环体后m自增为26,此时判断26<=25不成立,循环退出。
  • 循环结束后m的值为26,printf打印的是26%10 = 6,因此输出为6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:00