在下面的循环中,如果我们输入字符作为cin输入而不是预期的数字,那么它将进入无限循环.有人可以向我解释为什么会这样吗?
当我们使用时cin,如果输入不是数字,那么有没有办法检测到这一点以避免上述问题?
unsigned long ul_x1, ul_x2;
while (1)
{
cin >> ul_x1 >> ul_x2;
cout << "ux_x1 is " << ul_x1 << endl << "ul_x2 is " << ul_x2 << endl;
}
Run Code Online (Sandbox Code Playgroud) 我正在做一些关于Java的研究,发现这很令人困惑:
for (int i = 0; i < 10; i = i++) {
System.err.print("hoo... ");
}
Run Code Online (Sandbox Code Playgroud)
这是永无止境的循环!
任何人都有很好的解释为何会发生这样的事情
我第一次在Haskell程序中遇到了无限循环.我已经将它缩小到一个非常具体的代码部分,但我似乎无法精确指出我有一个非终止递归定义的位置.我模糊地熟悉:跟踪和:GHCi中的历史,但问题是我的代码的某些分支涉及相当多的递归修改Data.Map.Map,因为地图x是通过基于值adjust的地图中x'的某些东西获得的在另一张地图上取决于x'.具体细节在这里并不重要,但正如你可能知道的那样,如果这是以交织在一起的递归方式发生的,那么我的通话历史会在地图lookups,adjustments和insert离子所涉及的所有各种比较中完全陷入困境.
任何人都可以推荐一种更有效的方法来定位无限循环?例如,它可以帮助将呼叫历史限制为来自单个源文件的调用.
即使我关闭崇高,这个过程仍然继续,看到我的笔记本电脑转速,直到几分钟后放慢速度.我正在使用薄荷linux,似乎也无法终止终端进程.
我编写代码并且(尽管这很难相信很多),偶尔会搞砸,创建一个无限循环.使用我的新奇特Excel,Ctrl + Break不再有效.Esc键等也没有.我看过整个网络,看起来微软有一个错误,并不关心修复它.
有没有人知道如何重新向VBA引入Ctrl + Break功能,所以如果将来发生这种情况我不会失去工作/强制关闭?谢谢!
我在Haskell中有一个非终止表达式.我想调试并检查它没有终止的原因.我学到的一种技术是在GHCi中使用以下内容:
:set -fbreak-on-exception
:trace nonterminating_expression
^C
:hist 50
Run Code Online (Sandbox Code Playgroud)
所以我可以看到在无限计算中运行的指令.问题是我想继续计算:step,忽略中断.我能这样做吗?
用于调试非终止计算的任何其他解决方案?(历史大于50条记录或其他实践来帮助完成任务.)
我有一个简单的无限for循环,如下所示:
set_time_limit (0);
for (;;)
{
... //Doing some stuff including to write to a file
sleep(300);
}
Run Code Online (Sandbox Code Playgroud)
它在我的服务器上运行.(共享主机帐户)
我怎么能阻止它呢?
我认为像这样的表达式会导致Haskell永远评估.但GHCi和编译程序中的行为让我感到惊讶.
例如,在GHCi中,这些表达式被阻塞直到我Control+C,但没有消耗CPU.看起来好像在睡觉.
let loop = loop
let loop = 1 + loop
Run Code Online (Sandbox Code Playgroud)
我尝试用GHC编译这些程序:
main = print loop
where loop = 1 + loop
main = print loop
where loop = if True then loop else 1
Run Code Online (Sandbox Code Playgroud)
印刷的是:
Main: <<loop>>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:显然这些表达式被编译成与命令式语言中的循环或递归调用不同的东西.他们编译的是什么?这是一个特殊的规则来处理自己在右手边的0-arg函数,还是一个我不知道的更普遍的特殊情况?
[编辑]:
还有一个问题:如果这恰好是编译器的特殊处理,那么在无法检查所有无限循环时执行此操作的原因是什么?"熟悉的"语言并不关心像while (true);或者这样的案例int f() { return f();},对吗?
非常感谢.
我正在编写这个代码用于家庭作业(刚开始使用C++,所以请放轻松).我们刚刚开始的同时,今天和今天的循环.该程序运行正常,但如果您在程序要求输入整数时输入一个字母,它会无限循环.到底是怎么回事?(以下代码)***编辑:为了澄清,循环的部分是:"您输入的数字是负数.请输入正数以继续." 但是用户没有机会输入另一个号码.它只是继续打印这个.
#include <iostream>
using namespace std;
int main ( )
{
//define variables
int num1, num2, total;
char answer1;
do
{
//user enters a number
cout << "\nPlease enter a positive number and press Enter: \n";
cin >> num1;
//check that the given num1 value is positive
while (num1 < 0)
{
cout << "The number you entered is negative.\nPlease enter a positive number to continue.\n";
cin >> num1;
}
cout << endl;
//add the sum of 1 through …Run Code Online (Sandbox Code Playgroud) 似乎为ElasticBeanstalk实例选择t2.micro会将Beanstalk抛入无限循环.创建Beanstalk实例一小时后,自Beanstalk管理控制台上次事件更新以来20分钟.
有谁知道如何杀死Beanstalk实例部署?
infinite-loop ×10
haskell ×3
loops ×3
c++ ×2
debugging ×2
ghc ×2
break ×1
cin ×1
ctrl ×1
evaluation ×1
excel-vba ×1
for-loop ×1
ghci ×1
java ×1
php ×1
recursion ×1
sublimetext ×1
sublimetext2 ×1
validation ×1
vba ×1