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

C++代码while条件写i=30触发死循环的执行原理是什么?

C++代码无限循环问题原因解析

你遇到的是典型的赋值表达式误用为判断条件错误,while (i = 30)的具体执行逻辑如下:

  • C中赋值表达式的返回值为完成赋值后左侧变量的值,此处i=30的返回值固定为30,而C中非0整数会被隐式转换为布尔值true,因此该判断条件永远成立
  • 每次执行循环体前都会先运行while后的条件语句:你在循环体中虽然执行了i = i+1将i变为31,但下一次进入条件判断时,i=30会再次把i重置为30,永远无法触发条件为假的退出逻辑,因此程序会一直循环输出30

你原本计划写的i <= 30是比较表达式,仅会对i的当前值做大小判断、不会修改i本身的值,当i累加超过30时就会返回false正常退出循环。

相关代码完整复现:

#include <iostream>
using namespace std;
int main()
{
  
  int i=30;//initialization
  
  while (i =30)
  {
      cout<< i<< ' '; 
      i=i+1;
  } 
 
    
}

小提示:为了避免这类笔误,部分开发者会把常量写在比较运算符左侧,例如写成30 <= i,如果误写为30 = i编译器会直接报错,能提前发现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:36:01