短路求值


短路求值 (正體)

Free Web Hosting with Website Builder
求值策略

及早求值
惰性求值
部分求值
远程求值
短路求值

最小化计算(Short-circuit evaluation,也叫做短路计算),是一种计算策略,表达式只有在取得最后值的时候,才会进行计算。这意味着在某些情况下它不需要计算一个表达式的所有部分。

例子

考虑以下使用C语言写的例子:

   int a = 0;
   if (a && myfunc(b)) {
       do_something();
   }

在这个例子中,最小化计算使得myfunc(b)永远不会被调用。这是因为 a 等于false,而false AND q无论q是什么总是得到false。这个特性允许两个有用的编程结构。首先,不论判别式中第一个子判别语句要耗费多昂贵的计算,总是会被执行,若此时求得的值为 false,则第二个子判别运算将不会执行,这可以节省来自第二个语句的昂贵计算。再来,这个结构可由第一个子判别语句来避免第二个判别语句不会导致运行时错误。例如对以下使用C语言写的例子而言,最小化计算可以避免对空指针进行存取。

当使用最小化计算时,很重要的一点是得知表示式取值的顺序。某些编程语言中确保有一致的取值顺序。例如:C语言JavaPerlPythonRuby等。

它不过是下面语句的一种更加紧凑的表示形式罢了。

   if (cond_a) {
       if (expensive_or_dangerous_cond_b) {
           ...
       }
   }

参见







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History