新手学c++的一个小问题
这是在c++primer上看到的一个程序。。
#include<iostream.h>
void main()
{
int sum=0,value;
while(cin>>value)
{
sum+=value;
}
cout<<"Sum is:"<<sum<<endl;
}
这个程序只有在输入非int值(包括浮点型值和字母等等)时才会结束,这是因为输入的数据类型不正确而导致的不正常退出还是因为判断条件不成立而循环结束的正常退出呢?
先谢谢各位大神的解答了~
[解决办法]
判断条件不成立,当输入的是一个非int时,就会返回0
[解决办法]
是判断条件不成立的退出
[解决办法]
对>>操作,
Errors are signaled by modifying the internal state flags:
"failbit" The input obtained could not be interpreted as an element of the appropriate type.
Notice that some eofbit cases will also set failbit.
操作发生错误了, while结束
[解决办法]
如果输入了非int值,cin(istream)的IO状态是错误,istream的对象有一个到void *的类型转换操作符,当IO状态时错误的时候,该操作符返回的是0指针,否则返回自身的指针。0在while判断里面就是false,因此循环结束。
[解决办法]
你的逻辑判断是 cin >> value,如果输入int,则输入正确,为真,循环不结束;输入非int值,则不成功,返回false,故而循环结束.
[解决办法]
楼主跟一下cin.operator>>()函数就知道了
[解决办法]
为什么VC下输入2.1,输出结果为Sum is:2 ,然后就退出while循环了?
[解决办法]
条件不成利
[解决办法]
std库重载了>>
[解决办法]
输入的数据类型不正确而导致的不正常退出
如果是因为判断条件不成立而循环结束的,那么根本不会改变sum的值。
[解决办法]
判断条件,建议看plus里面写得很详细的!