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 @无名侠 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 ) cin>> 是个函数返回指只要你输入就返回真 你应该该成 cin>>value;
while(value)
{
} 但为什么判別的是函数返回值而不是value?然后就是cin不是一个istream对象么?是cin>>是一个函数还是>>是一个函数呢?再请教一下。。 似乎有点明白了。。还有,小甲鱼老师,这话可不可以这样理解:“cin是一个istream类型的全局变量,而不是一个函数。istream类重载>>操作符来执行输入操作并返回一个引用到(cin)”。。。但最后那个reference是啥意思?是一个值吗? 夜礼服 发表于 2016-1-3 15:10
似乎有点明白了。。还有,小甲鱼老师,这话可不可以这样理解:“cin是一个istream类型的全局变量,而不是一 ...
reference 可以理解为一个指针 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;
} 好的。。谢谢*^_^*
页:
[1]