int main()
{
int sum = 0, value = 0;
while (std::cin >> value)
sum += value;
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
因此,此代码从用户那里获取值并将其添加。我不明白是什么使它到达文件结尾。我对其进行了多次测试,发现当我使用较大的数字(9999999999)时,结束速度更快,但是当我输入1时,它永远不会结束。
答案 0 :(得分:2)
您正在遇到整数溢出。
更具体地说,std::istream
上的bool
运算符返回false,因为流未能将大值读取到int
中。
答案 1 :(得分:0)
布雷克。问题在于整数实际上只能如此之大。常规int
的范围是-32,767到32,767; long int
的范围是-2,147,483,647到2,147,483,647,依此类推。我确定在线上有一个列表,您可以在其中找到不同的范围(我不记得这些了)。
无论如何,我相信您的问题是您的int sum
太大了,并且正在破坏您的程序。此外,我建议您采用一种方法来结束您的while
循环,以使您的程序永远不会继续运行;您可以使用类似if(value == -1) break;
享受你的学业!