gpt4 book ai didi

c++ - 如果输入值超过目标类型大小,为什么 cin 不重新提示?

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:25 25 4
gpt4 key购买 nike

<分区>

我在实现一个简单的链表堆栈时注意到,如果我输入的值大于最大值,cin 不会重新提示。整数的大小。例如:

int input;
do {
cin >> input;
if (input == -1)
break;
else if (input == 0)
pop();
else
push(input);
} while (input != -1);

如果我输入的数字超过 int 的大小,将永远循环(注意 input 的类型是 int)。

这可能是我在用这种语言编程的短时间内遇到的相对隔离较好的 C++ 程序最危险的行为。因为循环在每次迭代时都会推送输入,所以我的程序的内存使用量在不到 30 秒的时间内急剧增加到 1GB 以上……我的电脑差点崩溃。

所以我想知道:为什么 cin 会表现出这种行为?

附言我通过在读取输入之前添加 input = -1 解决了这个无限循环问题。这是防止循环的最佳方法吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com