c++中while(cin>>x)的问题

double x;
while(cin>>x)
{...}
为什么当输入x的值为0时,while条件依然为真?当输入什么时才能跳出while循环
我只有在输入英文时才跳出循环 换行空格之类都没用是怎么回事?

while判断的是cin>>x这个条件,就是只要有输入存在就为真,你要是想当x为0的时候退出,就while(cin>>x&&x),输入字母的时候没有执行循环应该不是跳出了循环,而是字符类型与double类型的转换出错,出现异常了。

一个关于while(cin>>a)的一个不得不注意的问题
前几天写了一段代码大概意图是这样,要求输入三组数字到vector A ,vector B,vector C.于是我写下了如下代码:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2......
答案就在这里:标准输入cin的返回值以及while(cin>>x)的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

cin>>x返回一个isteam值,只要有输入就会返回一个固定值,一直为真。
可以向下面这样设计,判断一个实数是否0,要用绝对值。


#include <iostream>
#include <math.h>
using namespace std; 
int main(void)
{
    double x;
    do
    {
        cin>>x;
    }while(fabs(x)>0.001);

    return 0;
}

按ctrl+z 结束输入 再按回车运行

输入数据有误,或者读取内容完结时才结束循环

只要有输入就可以循环

图片说明
因为你给的类型是double类型,编译器认为只要是不能够隐式转换成功的cin就会返回错误,从而循环退出...