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

C语言循环何时产生无限结果?为何这段代码会无限运行?

为什么这段C代码会进入无限循环?

首先看你的代码,核心问题出在while循环的条件设置上:

#include<stdio.h> // 注:你原代码漏了开头的#,正确写法是#include<stdio.h>
int main(){
int i = 1;
while(1) // 此处条件是常量1,永远被视为“真”
{
printf("%d\n",i); // 修正了换行符的写法
--i;
}
}

你误解了循环终止的逻辑:
你以为--i让i变为0时循环会结束,但实际上while(1)的判断对象是常量1,它永远为真,根本不会去检查i的值。不管i怎么变化,这个循环的条件都不会转为假,因此会无限执行下去。

C语言中循环产生无限结果的常见场景:

  • 循环条件是永远为真的常量(比如while(1)、for(;;)),且循环内部没有break、return这类主动终止语句。
  • 循环变量的变化方向完全偏离终止条件:比如想让i递增到10时终止,却写了while(i<10) {--i;},i只会越来越小,永远满足i<10。
  • 整数溢出导致变量值循环:比如unsigned int类型的i从0递减,会溢出到类型最大值,永远不会变成负数,若循环条件是i>=0就会无限循环。

如果想让代码在i从1递减到0时终止,应该把循环条件改成检查i的取值:

#include<stdio.h>
int main(){
int i = 1;
while(i > 0) // 当i大于0时执行循环
{
printf("%d\n",i);
--i;
}
}

这样代码会打印1,随后i变为0,循环条件i>0为假,循环正常终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:57:14