夜礼服 发表于 2016-1-2 18:37:26

c++while条件式判定

#include<iostream>
int main()
{
int sum=0,value;
std::cout<<"input a number"<<std::endl;
while(std::cin>>value)
{
          std::cout<<"input the next number"<<std::endl;
          sum+=value;
}
std::cout<<"sum is: "<<sum<<std::endl;
return 0;
}
当输入零时,会不断循环,但零不是假值吗?结果如下
当输入1,2,3,4,5.0时,当输入5.0并按空格后循环结束并显示15结果如下
为什么会出现这种情况?如果5.0不符合类型则因该跳出循环,结果为10,但结果是输入5.0并按空格后循环有执行了两次,为是么会这样呢?条件式究竟怎样判别呢?@丁丁 @小甲鱼 @ryxcaixia @向往青莲 @wzy997991067 @无名侠

小甲鱼 发表于 2016-1-2 18:37:27

cin is a (global) variable of type istream , not a function. The istream class overrides the >> operator to perform input and return a reference to the object you called it on ( cin )

y290176346 发表于 2016-1-2 18:51:52

cin>> 是个函数返回指只要你输入就返回真 你应该该成 cin>>value;
while(value)
{

}

夜礼服 发表于 2016-1-2 19:01:42

但为什么判別的是函数返回值而不是value?然后就是cin不是一个istream对象么?是cin>>是一个函数还是>>是一个函数呢?再请教一下。。

夜礼服 发表于 2016-1-3 15:10:54

似乎有点明白了。。还有,小甲鱼老师,这话可不可以这样理解:“cin是一个istream类型的全局变量,而不是一个函数。istream类重载>>操作符来执行输入操作并返回一个引用到(cin)”。。。但最后那个reference是啥意思?是一个值吗?

小甲鱼 发表于 2016-1-4 01:18:45

夜礼服 发表于 2016-1-3 15:10
似乎有点明白了。。还有,小甲鱼老师,这话可不可以这样理解:“cin是一个istream类型的全局变量,而不是一 ...

reference 可以理解为一个指针

林問 发表于 2016-1-7 00:35:44

0它也是個整數阿 當然會一直進入迴圈你必須要設
while(std::cin>>value)
{
if(value==0)
break;
std::cout<<"input the next number"<<std::endl;
          sum+=value;
}
或是
while(std::cin>>value && value!=0)
{
std::cout<<"input the next number"<<std::endl;
          sum+=value;
}

夜礼服 发表于 2016-1-10 14:53:01

好的。。谢谢*^_^*
页: [1]
查看完整版本: c++while条件式判定