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

C语言中for循环后添加分号为何会导致执行结果差异巨大?

C语言中for循环后添加分号为何会导致执行结果差异巨大?

咱们先直观对比两段代码和它们的输出:

第一段代码(正常输出0-4)

int i;
for (i = 0; i < 5; i++) {
    printf(" %d \n", i);
}

输出:

0
1
2
3
4

第二段代码(输出5)

int i;
for (i = 0; i < 5; i++); {
    printf(" %d \n", i);
}

输出:

5

核心原因:分号代表「空语句」

在C语言里,分号;本身就是一个完整的语句——我们叫它「空语句」,表示“什么都不做”。

  • 第一段代码里,for循环后面紧跟的是大括号{},这整个大括号就是循环的执行体,每次循环都会跑一遍里面的printf,所以i从0到4的时候各打印一次,就得到了0-4的输出。
  • 第二段代码里,for循环后面多了个分号;,这就相当于告诉编译器:“这个for循环的执行体就是这个空语句,循环5次啥都不用做”。后面的大括号{}已经和for循环没关系了,它是一个独立的代码块,等for循环跑完(此时i已经变成5了),才会执行一次里面的printf,所以最终只输出5。

简单说就是:分号把循环体和后面的代码“切割”开了,循环白跑了5次,真正要执行的打印代码变成了循环结束后的单次执行~

备注:内容来源于stack exchange,提问作者Brando Lui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:23:06