由于以下两个问题导致程序崩溃,我感到很沮丧:
如果编译器足够胜任,这些似乎是可以预防的问题。如何以编程方式防止这些问题?
答案 0 :(得分:1)
现代编译器可以并且为了优化原因而展开循环,但是在不知道某些数据的情况下,甚至无法对循环是否将终止进行启发(参见:dataflow programming)。事实上,决定你的程序本身是否会终止称为Halting Problem
在其他情况下,您想要无限循环。例如,图形引擎通常会执行以下操作:
while(true)
render
至于你的SQL连接......我想当你错过一个时,它应该是非常明显的。在某些情况下,如果不给出INNER JOIN,则暗示INNER JOIN,因此从这个意义上说,编译器正在解决这个问题。