为什么当我输入较大的数字时,我的程序会到达文件末尾?

Why does my program reach end of file when I input larger numbers?

本文关键字:程序 文件 我的 输入 数字 为什么      更新时间:2023-10-16
int main()
{
int sum = 0, value = 0;
while (std::cin >> value)
sum += value;
std::cout << "Sum is: " << sum << std::endl;
return 0;
}

因此,此代码从用户那里获取值并添加它们。我不明白是什么让它到达文件末尾。我多次测试它,发现当我使用更大的数字 (9999999999( 时,它结束得更快,但当我只输入 1 秒时,它永远不会结束。

您遇到整数溢出。

更具体地说,std::istream上的bool运算符返回 false,因为流无法将大值读入int

Blake。问题是整数实际上只能这么大。常规int的范围是 -32,767 到 32,767;long int的范围是 -2,147,483,647 到 2,147,483,647,依此类推。我敢肯定网上有一个列表,您可以在其中找到不同的范围(我没有记住它们(。

无论如何,我相信你的问题是你的int sum变得太大,它破坏了你的程序。此外,我建议有一种方法可以关闭您的while循环,这样您的程序就不会永远持续下去;你可以这样做:if(value == -1) break;

祝你学习愉快!