| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3879 人关注过本帖
标题:关于使用cin输入作为while循环控制条件的问题
只看楼主 加入收藏
jr9910
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-9-2
收藏
 问题点数:0 回复次数:14 
关于使用cin输入作为while循环控制条件的问题
初学C++,遇到个简单问题想请教,题目很简单,输入数据,每次输入后显示当前所有输入的和,直到输入0程序结束。
我的实现(使用VS2008编译)如下:
// 每次输入数字以后报告到目前为止输入所有数字的和,输入0程序终止
#include <iostream>

int main()
{
    using namespace std;

    double x;
    double sum = 0;

    while (cin >> x) 这样使用不行,不知道为什么cin >> x始终为真
    {
        sum = sum + x;
        cout << "Now, sum = " << sum << endl;
    }

    cout << "Input 0, Warnnig.......\nTerminated!";
    cin.get();
    cin.get();
    return 0;
}
我的意图是使用cin>>x作为循环控制条件,当输入为0时,while条件为false,程序退出。但是实际执行起来发现cin>>x始终为真。请高手指点一下!
搜索更多相关主题的帖子: cin 条件 输入 
2010-09-02 22:35
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
cin从缓冲区接受字符,如果接受不到,它会等待输入!

★★★★★为人民服务★★★★★
2010-09-03 07:17
jr9910
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-9-2
收藏
得分:0 
我大概懂你的意思,但是当输入为0时,while的结束条件就满足了,这条cin语句是否应该不再执行了呢?
2010-09-03 10:42
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
楼主犯了想当然的错误, cin >> x 的返回值是 istream , 不是 x 的值, 所以一直是 真.
楼主如果知道有这个用法, 大概就不会这么想了
cin >> x >> y >> z;
2010-09-03 10:59
jr9910
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-9-2
收藏
得分:0 
回复 4楼 makebest
看的程序还比较少,但用cout同时输出过多个值,所以cin >> x >> y >> z的这种用法也是可以理解的。
2010-09-03 13:45
okboy
Rank: 1
来 自:四川
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-8-29
收藏
得分:0 
cin >> x 的返回值是 istream ,不是X的值,循环当然不会结束
2010-09-04 16:24
jr9910
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-9-2
收藏
得分:0 
回复 6楼 okboy
现在把cin这块弄明白了:cin函数返回cin。如果cin位于测试条件当中,将被转化为bool类型。如果输入成功,则转化后的值为true,否则为false。因此上面程序如果使用cin直接作为控制条件,在输入数字的情况下,将永远为true。楼上说的很好,但再详细些就好了。
2010-09-07 22:25
jr9910
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-9-2
收藏
得分:0 
回复 4楼 makebest
这种使用方法我今天看到实际例子了
2010-09-07 22:27
_ok123
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2010-9-6
收藏
得分:0 
你还是没有搞清楚C++最基本的输入输出流。
2010-09-09 15:58
staor
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2010-9-5
收藏
得分:0 
回复 7楼 jr9910
只好在循环中加入if(x==0) break;了..
2010-09-12 15:42
快速回复:关于使用cin输入作为while循环控制条件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079929 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved