VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 505|回复: 2

[求助] 求解惑 c++小程序

[复制链接]
00_avatar_middle
在线会员 luoya120 发表于 2018-3-16 14:12:34 | 显示全部楼层 |阅读模式
3驿站币
        do
        {
                cout << "输入2个数:" << endl;
                int va1 = 0, va2 = 0;
                cin >> va1 >> va2;
                cout << "sum:" << va1 + va2 << endl;

        } while (true);

当输入一个大于int的大数,程序就是进入死循环,如图,不知为何?

QQ截图20180316140948.png




上一篇:求VC单EXE安装服务启动源码
下一篇:线程导致cpu使用率过高的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-3-16 14:38:19 | 显示全部楼层
出现这种结果的原因就是cin进入了一种错误的状态,在这种情况下程序会持续输出cout后面的字符串并忽略后面的cin语句。解决的办法是重置输入缓冲,可以改成如下:

  1. int main()
  2. {
  3.         do
  4.         {
  5.                 cout << "输入2个数:" << endl;
  6.                 int va1 = 0, va2 = 0;
  7.                 cin >> va1 >> va2;
  8.                 if (!cin)
  9.                 {
  10.                         cin.clear();
  11.                 }
  12.                 cout << "sum:" << va1 + va2 << endl;

  13.         } while (true);

  14.         return 0;
  15. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

00_avatar_middle
ico_lz  楼主| luoya120 发表于 2018-3-16 15:33:53 | 显示全部楼层
Syc 发表于 2018-3-16 14:38
出现这种结果的原因就是cin进入了一种错误的状态,在这种情况下程序会持续输出cout后面的字符串并忽略后面 ...

谢谢老总的及时回复,这样修改后确实没问题了,但是cin到底处于何种异常状态呢?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-20 23:21

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表