注册 登录
编程论坛 C++教室

请教一道简单的C++

kindol 发布于 2017-03-20 13:38, 1578 次点击
各位大佬,我打了一道简单的C++如下,但是这里有个问题不懂,代码以及输入如下:

代码:
#include <iostream>
using namespace std;
int main() {
    int sum = 0, val;
    while(cin>>val)
        sum += val;
    cout<<sum<<endl;
    return 0;
}
输入:10,20,30,40
这个时候我是懂的,输入到40依旧是不会有输出的,除非加上文件结束符

但是如果输入改为这样,代码不变
输入:10,20,30,40,5.5
这里加上了5.5,竟然就会有输出了,而且输出就变成了105。
这里我的问题在于输入5.5的时候,为什么他成功读进去了val里面,但是while语句在执行完这一次后就主动结束了
麻烦各位大佬帮我看看

[此贴子已经被作者于2017-3-20 13:41编辑过]

4 回复
#2
rjsp2017-03-20 13:41
贴代码,而非贴图

如果输入数据和指定输入格式不匹配,那么读入失败
#3
kindol2017-03-20 13:44
回复 2楼 rjsp
读入失败,但是为什么输出会是105,不是100?
#4
rjsp2017-03-20 13:58
以下是引用kindol在2017-3-20 13:44:18的发言:

读入失败,但是为什么输出会是105,不是100?

输入 10 20 30 40 5.5 后,依次成功读取到 10 20 30 40 5
然后试图读取 .5 时失败
#5
kindol2017-03-20 14:10
回复 4楼 rjsp
哈,好的,懂了,谢谢大神
1