每当人们询问关于编程的停止问题时,人们都会回答:“如果你只是添加一个循环,你就停止了程序,因此你不能自动执行任务 ” 说得通。 如果你的程序有一个无限循环,那么当你的程序运行时,你无法知道程序是否仍然在处理input,或者只是循环无限。 但是,这似乎有些违反直觉。 如果我正在编写一个暂停问题解决器,它将源代码作为input。 rascher@localhost$ ./haltingSolver source.c 如果我的代码(source.c)如下所示: for (;;) { /* infinite loop */ } 看来我的程序看起来很容易。 如果条件只是基于文字而没有variables,那么你总是知道循环的结果,如果有variables(例如while(x <10)),看看是否有variables那些variables都会被修改,如果没有,那么你总是知道循环的结果。 当然,这些检查不是微不足道的(计算指针算术等),但似乎不可能。 例如: int x = 0 while (x < 10) {} 可以被检测到。 以及 – 虽然不平凡: int x = 0 while (x < 10) { x++; if (x == 10) { x = 0 } […]