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

输入浮点数时为何这段C++代码陷入无限循环?

输入浮点数时C++程序陷入无限循环的原因分析

问题场景

现有一段用于检测负数输入的C++程序,输入整数时运行正常,但输入浮点数会陷入无限循环,程序代码如下:

#include<iostream>
using namespace std;
int main(){

     int positive = 0;
     
     while(positive>=0){
          cout<<"Enter number"; cin>> positive;
          if (positive<0){
               cout<<"yes it is negative";
          }
     }
     
     return 0;
}

原因解释

  • 当输入浮点数(比如3.14)时,cin尝试将其存入int类型的变量positive,只会提取整数部分(这里是3)存入变量,剩下的.14会留在输入缓冲区中。
  • 下一次循环执行时,cin会直接读取缓冲区里残留的.14,但.14不是有效的整数格式,导致cin读取失败并进入错误状态。
  • 一旦cin进入错误状态,后续所有的输入操作都会直接跳过,变量positive的值会保持之前的3(仍然满足>=0的循环条件),循环会一直重复执行,无限输出"Enter number"。
  • 程序没有处理输入错误的逻辑,既没有清除cin的错误状态,也没有清空输入缓冲区里的无效内容,因此无法跳出循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:35:22