Cin在while和for循环中被忽略

时间:2016-08-17 19:44:06

标签: c++ while-loop cin

好吧我是C ++的新手,所以我在Lippman的 C ++ Primer 5th Edition 中做了一些练习,该功能甚至从未提示用户输入。我非常沮丧,因为我生产的代码都没有工作,也没有从答案中获得。这只在编译和运行时产生“0”。任何帮助表示赞赏。在x64 Mac上编译。

#include <iostream>
int main()
{
    int sum = 0;
    for (int val; std::cin >> val; sum += val);
    std::cout << sum << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:1)

该程序有效,它的工作方式与您的预期不同!

它希望你继续输入由空格分隔的数字,然后给出文件结尾(Windows上的ctrl-Z,空行的Unix上的ctrl-d)或其他无效输入,以便cin去失败状态。

cin进入失败状态时,它会给for循环赋予错误(由于使用重载的bool强制转换操作符隐式强制转换为bool),结束。然后你的程序将它们打印出来。如果你没有设法输入任何数字,那么它会打印0,因为sum被初始化为。