我们都知道在逻辑表达式约短路时,即当是否有短路倍增这样的事情?
if (False AND myFunc(a)) then
...
不打扰执行myFunc()
,因为没有办法的if
条件可以实现的。
我很好奇是否有日常代数方程的等价,说
result = C*x/y + z
如果C=0
有评估的第一项是没有意义的。如果x
和y
是标量,那么性能方面并不重要,但如果我们假设它们是大矩阵并且操作代价昂贵(并且适用于矩阵),那么肯定会产生差异。当然你可以通过投入if C!=0
声明来避免这种极端情况。
所以我的问题是这样的功能是否存在,以及它是否有用。我不是一个程序员,所以它可能以我没有遇到过的某个名字出现;如果是的话请赐教:)
逻辑短路是从功能的角度来看一个重要的概念,而“算术短路”是只是在编译器级别进行优化而没有功能差异。你的选择语言可能已经在幕后做了,而你没有注意到。 – deceze
知道比我更多的人应该回答,但我想你会遇到问题,如果你短暂的分裂。例如,如果y = 0,会发生什么?如果短路,那么当答案实际上是错误时它将返回0。 – Nate
@deceze正如逻辑短路一样,算术短路的确会有超越优化的功能差异。考虑'result = C * myfunction()'。如果'C == 0'导致算术表达式短路,那么'myfunction'永远不会被调用,并且不会发生任何副作用(就像逻辑短路一样)。 –