关于使用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始终为真。请高手指点一下![em06]
楼主如果知道有这个用法, 大概就不会这么想了
cin >> x >> y >> z;
回复 4楼 makebest
看的程序还比较少,但用cout同时输出过多个值,所以cin >> x >> y >> z的这种用法也是可以理解的。 cin >> x 的返回值是 istream ,不是X的值,循环当然不会结束回复 6楼 okboy
现在把cin这块弄明白了:cin函数返回cin。如果cin位于测试条件当中,将被转化为bool类型。如果输入成功,则转化后的值为true,否则为false。因此上面程序如果使用cin直接作为控制条件,在输入数字的情况下,将永远为true。楼上说的很好,但再详细些就好了。回复 4楼 makebest
这种使用方法我今天看到实际例子了 你还是没有搞清楚C++最基本的输入输出流。回复 7楼 jr9910
只好在循环中加入if(x==0) break;了.. while((cin>>x)&&(x!=0))就可以了 while(x){ cin>>x;
...
死循环! 连空间声明都写错地方了 #include <iostream>
using namespace std;
int main()
{
double x;
double sum = 0;
while (cin>>x,x) //添加逗号运算符。因为cin返回值始终为1,直到遇见文件结束符ctrl+z
{
sum = sum + x;
cout << "Now, sum = " << sum << endl;
}
cout << "Input 0, Warnnig.......\nTerminated!";
cin.get();
cin.get();
return 0;
}
页:
[1]